這個思路和**是參考紫書。儲存數的長度為s + n + s + 1。這樣能保證視窗可以從第乙個數開始滑,可以求出所有情況(有例外,就是第三組資料型別)。以第一組資料為例,
陣列為 -1,-1,-1,-1,3,4,4,1,3,2,1,2,3,4,-1,-1,-1,-1。視窗長度為s = 4。從第乙個數開始滑,判斷此視窗合法性,並進行有效數的數量調整,下乙個視窗可據此判斷。接下來,只需統計滑動的可能性就性了。
#include#include#includeusing namespace std;
const int maxn = 3 * 100000 + 5;
int num[maxn];
int ok[maxn];
int cnt[maxn];
int main()
int ans = 0;
for(int i = 0; i < s; i++)
if(valid) ans++;
}if(ans == n + 1) ans = s;//請思考最後一組資料
printf("%d\n", ans);
}return 0;
}
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...
滑動視窗演算法 演算法 滑動視窗 二
演算法 這算是滑動視窗的另外乙個典型題目,在資料量比較少的時候,可以直接採用暴力法解決 不過資料量比較大的時候,我們就需要想辦法解決視窗裡面最大值的思路,這裡我們採用雙端佇列queue來實現,借助 queue來儲存前面計算過的最大值資訊。題目 解法1 暴力解法 按照 視窗大小,從頭到尾依次遍歷,將每...