滑動視窗的最大值 單調佇列

2022-02-13 10:34:20 字數 787 閱讀 9828

滑動視窗最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。

例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為; 針對陣列的滑動視窗有以下6個: , , , , , 。

題解使用遞減的單調佇列記錄當前佇列的遞減數,佇列首元素就是當前視窗的最大值

遍歷陣列,設定i,j代表視窗起點和終點

當隊頭等於視窗起點前乙個值時(在視窗外),刪除隊頭

將佇列中小於視窗終點的值清除再插入視窗終點值,維持佇列遞減特性

獲取隊頭值存入返回的陣列

function

maxinwindows

(nums, size)

/* 將nums[j]加入遞減佇列 */

while

(dequeue.length && dequeue[dequeue.length -1]

< nums[j]

) dequeue.

push

(nums[j]);

/* 將當前最大值加入 */

if(i >=

0) res.

push

(dequeue[0]

);}// console.log(res)

return res;

}maxinwindows([

2,3,

4,2,

6,2,

5,1]

,3);

// [ 4, 4, 6, 6, 6, 5 ]

棧與佇列 單調佇列解決滑動視窗最大值

設計單調佇列的時候,pop,和push操作要保持如下規則 pop value 如果視窗移除的元素value等於單調佇列的出口元素,那麼佇列彈出元素,否則不用任何操作 push value 如果push的元素value大於入口元素的數值,那麼就將佇列入口的元素彈出,直到push元素的數值小於等於佇列入...

滑動視窗的最大值 佇列的最大值

請定義乙個佇列並實現函式max得到佇列裡的最大值,要求函式max push back和 pop front的時間複雜度都是o 1 在佇列中維護乙個儲存最大值的佇列,當pop和push操作的同時也對最大值佇列進行維護。當彈出的時佇列中的最大值時,也彈出最大值佇列的頭,當壓入新值時,對最大值佇列從後向前...

力扣 239 滑動視窗最大值 維護單調佇列

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。輸入 nums 1 3,1,3 5,3 6,7 和 k 3輸出 3 3,5 5,6 7 解釋 滑動視窗的位置 最大值 1 ...