239 滑動視窗最大值 C

2021-09-19 12:50:38 字數 590 閱讀 1578

思路:用乙個雙端佇列儲存在滑動視窗裡的元素下標。保證隊首元素是滑動視窗的最大值的下標。

當新元素進入佇列時,如果隊尾的元素不比新元素大,那麼就將隊尾元素彈出。因為該元素不如新元素大,生存能力又不如新元素強。

新元素進隊後,就可以判斷隊頭元素是否需要出隊。如果出隊,新的隊頭元素就是此時的所求。

vector<

int>

maxslidingwindow

(vector<

int>

& nums,

int k)

//隊首元素就是此時的最大值

res.

push_back

(nums[que.

front()

]);//處理後面的元素,每次for迴圈都會輸出一次

for(

int i=k;i

size()

;++i)

return res;

}

239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大...

239 滑動視窗最大值

239.滑動視窗最大值 solution deque solution maxindex 暴力法的時間複雜度為 o n k 弊端為每次掃瞄視窗的最大值,每兩次掃瞄之間都會存在重複的值比較,已經知道了他們的最大值是誰了,所以要減少比較次數 為什麼新增的是索引 將i加到隊尾 deque.addlast ...

239 滑動視窗最大值

給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗內的 k 個數字。滑動視窗每次只向右移動一位。返回滑動視窗中的最大值。高階 示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 解釋 滑動視窗的位置...