劍指offer64 滑動視窗的最大值

2021-10-20 18:20:06 字數 558 閱讀 3200

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

視窗大於陣列長度的時候,返回空

示例1輸入

[2,3,4,2,6,2,5,1],3

返回值[4,4,6,6,6,5]

思路1:暴力

兩層迴圈,每個視窗迴圈求最大值

實現:

class

solution

;int s=num.

size()

; vector<

int> ret;

for(

int i=

0;i<=s-size;i++

) ret.

push_back

(temp);}

return ret;}}

;

思路2:

deque實現

這個實現在筆試中一般是想不到的,在面試中倒是可以一步步優化得到。

劍指offer 64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 滑動視窗應當是佇列,但為了得到滑動視窗的最大值,佇列序可以從兩端刪除元素,因此使用雙端佇列。原則 對新來的元素k,將其與雙端...

劍指offer64 滑動視窗的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 不能每次選取範圍再比較,這樣時間複雜度太高。可以建立乙個佇列,佇列首部是最大值索引,每次要先去掉小於當前數的所有索引,再去掉...

劍指offer(64)滑動視窗中的最大值

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 這道題我們需要轉換下參考物件,像物理學中一樣。題目描述的是滑動視窗在陣列上移動。如果我們以滑動視窗為物件,那麼就是陣列在滑動...