面試題59 I 滑動視窗的最大值

2021-10-05 13:20:26 字數 1394 閱讀 4866

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