滑動視窗 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...