給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。
示例:
輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3
輸出: [3,3,5,5,6,7]
解釋:
滑動視窗的位置 最大值
--------------- -----
[1 3 -1] -3 5 3 6 7 3
1 [3 -1 -3] 5 3 6 7 3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7 5
1 3 -1 -3 [5 3 6] 7 6
1 3 -1 -3 5 [3 6 7] 7
你可以假設 k 總是有效的,在輸入陣列不為空的情況下,1 ≤ k ≤ 輸入陣列的大小。
class
solution
int index =0;
int[
] res =
newint
[nums.length - k +1]
; linkedlist
queue =
newlinkedlist
<
>()
;for
(int i =
0; i < nums.length; i++
)// 不走 while 的話,說明我們正常在佇列尾部新增元素
queue.
addlast
(i);
// 如果滑動視窗已經略過了佇列中頭部的元素,則將頭部元素彈出
if(queue.
peekfirst()
==(i - k)
)// 看看視窗有沒有形成,只有形成了大小為 k 的視窗,我才能收集視窗內的最大值
if(i >=
(k -1)
)}return res;
}}
劍指offer 面試題59 1 滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 掃瞄每個滑動視窗的所有數字並找出其中的最大值。如果滑動視窗的大小為k,則需要o k 時間找到最大值。對於長度為 n 的輸入陣...
劍指offer 滑動視窗問題
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 本人思路 每次滑動,總是減去乙個值,新增乙個值 如果新增值大於上乙個視窗的最大值,那麼新增值為本視窗的最大值 否則,如果上乙...
劍指 面試題59 1 滑動視窗的最大值
題目 給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。思路 設定雙端佇列存放可能成為最大值的數字對應的下標 c class solution return res python class solution def maxslidingwindow self,nums l...