給你乙個長度為n的陣列,乙個長為k的滑動的窗體從最左移至最右端,你只能見到視窗的k個數,每次窗體向右移動一位,如下圖:
你的任務是找出窗體在各位置時的最大值和最小值。
第1行:2個整數n,k(k<=n<=1000000)
第2行:n個整數,表示陣列的n個元素(<=2*10^9)
第1行:滑動視窗從左向右移動每個位置的最小值,每個數之間用乙個空格分開
第2行:滑動視窗從左向右移動每個位置的最大值,每個數之間用乙個空格分開
8 31 3 -1 -3 5 3 6 7
-1 -3 -3 -3 3 3
3 3 5 5 6 7
單調佇列模板。
維護乙個長度為k的單調佇列,每次用隊首來的出最大和最小值,新加入的數就放在隊尾。
如果隊首的距離大於k,則head++,即隊首出隊。若新來的數值比隊尾更優,則tail--,即隊尾出隊。
#include#includeusing namespace std;
int n,k,a[1000005];
struct queueq[1000005];
inline int read()
void work(bool f)
for(i=k; i<=n; i++) {
if(f)while(a[i]=head)tail--;
else while(a[i]>q[tail].val&&head<=tail)tail--;
q[++tail].val=a[i];q[tail].pos=i;
while(q[head].pos+k<=i&&head<=tail)head++;
cout<
(筆試題)滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 假設視窗大小為w,遍歷陣列,從陣列第w 1位開始,每次移動一位,並計算視窗w的最大值。時間複雜度 計算視窗的最大值需o w ...
TCP面試題之滑動視窗原理
作用 1.提供tcp可靠性 對傳送的資料進行確認 2.流量控制 視窗大小隨鏈路變化 一 tcp視窗機制 tcp中視窗大小是指tcp協議一次傳輸多少個資料。因為tcp是乙個面向連線的可靠的傳輸協議,既然是可靠的就需要傳輸的資料進行確認。tcp視窗機制有兩種,一種是固定視窗大小,另一種是滑動視窗。資料在...
劍指offer 面試題59 1 滑動視窗的最大值
給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 掃瞄每個滑動視窗的所有數字並找出其中的最大值。如果滑動視窗的大小為k,則需要o k 時間找到最大值。對於長度為 n 的輸入陣...