有乙個長度為 n 的數列和乙個大小為 k 的視窗, 視窗可以在數列上來回移動. 求每次視窗內數的最大值和最小值分別是多少.
考察單調佇列。遍歷陣列內元素將其加入佇列,需要注意兩點,一是將要加入佇列的元素的索引不能比佇列頭元素大k,
如果不符合條件就要將頭移除佇列,二是判斷將加入元素和佇列尾元素的大小關係,如果不符合條件就要彈出佇列。然後再將元素加入佇列。
#include
#include
using
namespace std;
long
long n, k;
long
long arr[
1000000];
intmain()
cout << endl;
while
(!q.
empty()
) q.
pop_back()
;for
(long
long i =
0; i < n; i++
)}
Week5 D 滑動視窗滑動視窗
week5 d 滑動視窗滑動視窗 zjm 有乙個長度為 n 的數列和乙個大小為 k 的視窗,視窗可以在數列上來回移動.現在 zjm 想知道在視窗從左往右滑的時候,每次視窗內數的最大值和最小值分別是多少.例如 數列是 1 3 1 3 5 3 6 7 其中 k 等於 3.window position ...
week5 D 滑動視窗滑動視窗
zjm 有乙個長度為 n 的數列和乙個大小為 k 的視窗,視窗可以在數列上來回移動.現在 zjm 想知道在視窗從左往右滑的時候,每次視窗內數的最大值和最小值分別是多少.例如 數列是 1 3 1 3 5 3 6 7 其中 k 等於 3.window position minimum value max...
D 滑動視窗 (單調佇列)
zjm 有乙個長度為 n 的數列和乙個大小為 k 的視窗,視窗可以在數列上來回移動.現在 zjm 想知道在視窗從左往右滑的時候,每次視窗內數的最大值和最小值分別是多少.例如 數列是 1 3 1 3 5 3 6 7 其中 k 等於 3.window position minimum value max...