經典滑動視窗模板題

2021-10-09 16:11:14 字數 1450 閱讀 6937

滑動視窗 acwing154

題目:給定乙個大小為n≤106的陣列。

有乙個大小為k的滑動視窗,它從陣列的最左邊移動到最右邊。

您只能在視窗中看到k個數字。

每次滑動視窗向右移動乙個位置。

以下是乙個例子:

該陣列為[1 3 -1 -3 5 3 6 7],k為3。

視窗位置 最小值 最大值

[1 3 -1] -3 5 3 6 7 -1 3

1 [3 -1 -3] 5 3 6 7 -3 3

1 3 [-1 -3 5] 3 6 7 -3 5

1 3 -1 [-3 5 3] 6 7 -3 5

1 3 -1 -3 [5 3 6] 7 3 6

1 3 -1 -3 5 [3 6 7] 3 7

您的任務是確定滑動視窗位於每個位置時,視窗中的最大值和最小值。

輸入格式

輸入包含兩行。

第一行包含兩個整數n和k,分別代表陣列長度和滑動視窗的長度。

第二行有n個整數,代表陣列的具體數值。

同行資料之間用空格隔開。

輸出格式

輸出包含兩個。

第一行輸出,從左至右,每個位置滑動視窗中的最小值。

第二行輸出,從左至右,每個位置滑動視窗中的最大值。

輸入樣例:

8 31 3 -1 -3 5 3 6 7

輸出樣例:

-1 -3 -3 -3 3 3

3 3 5 5 6 7

/*

滑動視窗——經典利用單調佇列解決,用乙個dequeue雙端佇列維護乙個單調佇列,佇列中儲存陣列的索引

儲存索引便於判斷滑動視窗是否超出滑過而彈出隊頭元素

*/#include

#include

#include

#include

#include

#include

using

namespace std;

const

int n =

1000010

;int a[n]

;deque<

int>windowslide;

int n, k;

void

findmin()

}void

findmax()

}int

main()

leetcode 239 滑動視窗最大值

/*

leetcode 239滑動視窗最大值

*/class

solution

if(i >= k -

1)result.

push_back

(nums[slidewindow.

front()

]);}

return result;}}

;

滑動視窗型別題

第一題 滑動視窗的最大值 來自 劍指offer 題目 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 第二題 dna序列 來自 牛客網 華為機試 題目 輸入描述 輸入乙個s...

滑動視窗經典題目Sliding windows

smallest subarray with a given sum easy 325 maximum size subarray sum equals k 904 fruits into baskets medium 003 no repeat substring hard longest sub...

leetcode之滑動視窗模板

假設你有兩個陣列,乙個長乙個短,短的元素均不相同。找到長陣列中包含短陣列所有的元素的最短子陣列,其出現順序無關緊要。返回最短子陣列的左端點和右端點,如有多個滿足條件的子陣列,返回左端點最小的乙個。若不存在,返回空陣列。示例 1 輸入 big 7,5,9,0,2,1,3,5,7,9,1,1,5,8,8...