劍指offer 59 1 滑動視窗的最大值

2021-10-07 04:54:36 字數 1084 閱讀 8374

給定乙個陣列 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...