題目:給定乙個陣列 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
思想就是:不斷在區間內找到最大值,壓入陣列中,視窗向後移動,直至結束。
vector<
int>
maxslidingwindow
(vector<
int>
& nums,
int k)
if(index==end)
//進行重新設定區間範圍
index++;}
return res;
}int
main()
}
我們先了解一下雙端佇列的基本操作函式,主要是增加,刪除,免得一會一頭霧水:
函式含義
front
返回雙端佇列的頭元素,若隊列為空 會導致未定義的行為發生。
back
返回雙端佇列的尾元素,若隊列為空 會導致未定義的行為發生。
push_back
在雙端佇列的末尾位置新增乙個元素。
push_front
在雙端佇列的起始位置之前插入乙個元素。
pop_back
刪除deque容器中的最後乙個元素,有效地將容器大小減少乙個。
pop_front
刪除deque容器中的第乙個元素,有效地將容器大小減少乙個。
這個解題思路就是:
這下肯定明白了,嘻嘻,那麼看**:
vector<
int>
maxslidingwindow
(vector<
int>
& nums,
int k)
res.
push_back
(nums[deque.
front()
]);//把第一次的最大值壓入
//開始移動滑動視窗
for(
int i=k;isize()
;i++
)return res;
}
加油哦!o(∩_∩)o。 59 I 滑動視窗的最大值
給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。示例 輸入 nums 1 3,1,3 5,3 6,7 和 k 3輸出 3 3,5 5,6 7 解釋 滑動視窗的位置 最大值 13 1 35 3673 1 3 1 3 5367 313 1 3 5 36 7513 1 353 ...
劍指offer 面試題59 滑動視窗的最大值
面試題 劍指offer 題目解答 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 使用蠻力法,先獲得所有的滑動視窗,然後在得到視窗的最大值即可。但是這個方法的時間複雜度是o...
59 滑動視窗的最大值
滑動視窗的最大值 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 57.cpp 定義控制台應用程式的入口點。include stdafx.h include include...