lintcode 滑動視窗的最大值

2021-07-06 06:42:05 字數 723 閱讀 4973

給出乙個可能包含重複的整數陣列,和乙個大小為 k 的滑動視窗, 從左到右在陣列中滑動這個視窗,找到陣列中每個視窗內的最大值。

樣例給出陣列[1,2,7,7,8], 滑動視窗大小為k = 3. 返回[7,7,8].

解釋:最開始,視窗的狀態如下:

[|1, 2 ,7| ,7 , 8], 最大值為7;

然後視窗向右移動一位:

[1, |2, 7, 7|, 8], 最大值為7;

最後視窗再向右移動一位:

[1, 2, |7, 7, 8|], 最大值為8.

挑戰o(n)時間,o(k)的額外空間

解題思路:

維持乙個雙端佇列qmax,裡面存放著nums中元素的下標,這些下標對應的元素在qmax中嚴格遞減,所以qmax的隊頭對應的元素最大,隊尾對應的元素最小。

left位於滑動視窗的左端,如果qmax中的元素過期(即元素位於left的左邊)則彈出,qmax存放下標的好處就是可以和left直接比較判斷是否過期

class solution 

return res;

}};

滑動視窗的最大值 LintCode

給出乙個可能包含重複的整數陣列,和乙個大小為 k 的滑動視窗,從左到右在陣列中滑動這個視窗,找到陣列中每個視窗內的最大值。樣例 給出陣列 1,2,7,7,8 滑動視窗大小為 k 3.返回 7,7,8 解釋 最開始,視窗的狀態如下 1,2 7 7 8 最大值為 7 然後視窗向右移動一位 1,2,7,7...

最大滑動視窗

題目描述 給定乙個陣列a,有乙個大小為w的滑動視窗,該滑動視窗從最左邊滑到最後邊。在該視窗中你只能看到w個數字,每次只能移動乙個位置。我們的目的是找到每個視窗w個數字中的最大值,並將這些最大值儲存在陣列b中。例如陣列a 1 3 1 3 5 3 6 7 視窗大小w為3。則視窗滑動過程如下所示 wind...

最大滑動視窗

給定乙個陣列a,有乙個大小為w的滑動視窗,該滑動視窗從最左邊滑到最後邊。在該視窗中你只能看到w個數字,每次只能移動乙個位置。我們的目的是找到每個視窗w個數字中的最大值,並將這些最大值儲存在陣列b中。例如陣列a 1 3 1 3 5 3 6 7 視窗大小w為3。則視窗滑動過程如下所示 window po...