劍指offer 用單調棧解決滑動視窗最大值問題

2021-10-23 18:25:59 字數 384 閱讀 5265

用雙端佇列來儲存視窗資料,在儲存的時候通過比較把最大值放在隊首,每次將隊首資料放入結果陣列。

1.每次放入資料時,將該資料與佇列末尾的元素資料相比較,小的出隊,這樣就保證了單調遞減的佇列;

2.判斷隊首元素是否出隊。因為儲存的是下標,所以通過比較下標即可知道是否出隊。因為每次只移動1,所以只會有1個元素出隊,用if即可不需要用while迴圈

3.如果元素下標已經達到視窗值,即可記錄最大值。

vector<

int>

maxslidingwindow

(vector<

int>

& nums,

int k)

return res;

}

劍指offer 滑動視窗問題

給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 本人思路 每次滑動,總是減去乙個值,新增乙個值 如果新增值大於上乙個視窗的最大值,那麼新增值為本視窗的最大值 否則,如果上乙...

劍指offer 棧相關

回歸一下基本概念 python 實現棧 例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的乙個彈出序列,但4,3,5,1,2就不可能是該壓棧序列的彈出序列。注意 這兩個序列的長度是相等的 思路 借用乙個輔助的棧,遍歷壓棧順序,先將第乙個放入棧中,這裡是1,然後判斷棧...

劍指Offer(一) 棧

目錄 1 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。2 棧的壓入 彈出序列 思路 3 包含min函式的棧 思路 c 解答 python解答 4 二叉搜尋樹的後序遍歷序列 5 按之字形順序列印二叉樹 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。cod...