給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。1.遍歷每個視窗最大值,存入陣列示例:輸入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 輸出: [3,3,5,5,6,7]
class
solution
res.
push_back
(temp)
; left++
; right++;}
return res;}}
;
2.利用deque維護每次視窗滑動後的最大值,將前乙個視窗小於新進視窗的從前與後分別pop,每次留下最大的就是第乙個元素。
class
solution;if
(k==1)
return nums;
deque<
int>dq;
vector<
int>res;
int i=
1-k;
//這時視窗還沒形成
int j=0;
while
(jsize()
)return res;}}
;
劍指Offer59 滑動視窗的最大值
1.維護乙個單調不嚴格遞減佇列deque o n 遍歷起始位置o n 對於每個視窗只需o 1 獲得最大值,空間o k deque最多存當前視窗內的所有元素 當當前視窗內元素不嚴格單減的時候 class solution 陣列為空,或視窗過大或過小 vector int res 存每個視窗的最大值 d...
劍指offer59題(對稱的二叉樹)
題目 請實現乙個函式,用來判斷一顆二叉樹是不是對稱的。注意,如果乙個二叉樹同此二叉樹的映象是同樣的,定義其為對稱的。思路 根據前序遍歷 根 左 右 和對稱的前序遍歷 根 右 左 即可判斷。只要左子樹的左結點和右子樹的右結點,左子樹的右節點和右子樹的左結點相等,就是對稱的。public class t...
劍指offer 滑動視窗問題
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 本人思路 每次滑動,總是減去乙個值,新增乙個值 如果新增值大於上乙個視窗的最大值,那麼新增值為本視窗的最大值 否則,如果上乙...