給出乙個可能包含重複的整數陣列,和乙個大小為 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...