劍指Offer59 滑動視窗的最大值

2021-10-21 06:24:25 字數 513 閱讀 1267

1.維護乙個單調不嚴格遞減佇列deque:o(n):遍歷起始位置o(n),對於每個視窗只需o(1)獲得最大值,空間o(k):deque最多存當前視窗內的所有元素(當當前視窗內元素不嚴格單減的時候)

class

solution

;//陣列為空,或視窗過大或過小

vector<

int> res;

//存每個視窗的最大值

deque<

int> dq;

//單調遞減佇列

for(

int i =

0; i < k;

++i)

res.

push_back

(dq.

front()

);//第乙個視窗的最大值

for(

int i =

1; i <= n - k;

++i)

return res;}}

;

更通用的寫法是存索引

劍指offer59題 滑動視窗的最大值

給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 1.遍歷每個視窗最大值,存入陣列 class solution res.push back temp left right re...

劍指offer 滑動視窗問題

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 本人思路 每次滑動,總是減去乙個值,新增乙個值 如果新增值大於上乙個視窗的最大值,那麼新增值為本視窗的最大值 否則,如果上乙...

劍指offer59 I 滑動視窗的最大值

題目描述 給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。解析解法一 沒有任何優化,直接擷取陣列,依次遍歷求各陣列最大值 public int maxslidingwindow int nums,int k maxnums i max return maxnums 解法二...