給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小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個 這道題我們需要轉換下參考物件,像物理學中一樣。題目描述的是滑動視窗在陣列上移動。如果我們以滑動視窗為物件,那麼就是陣列在滑動...