劍指offer59佇列最大值

2021-10-13 13:09:14 字數 654 閱讀 8292

這道題為什麼在leetcode裡試easy。。。懷疑人生。

之前做過一道在o(1)時間內找到最小值的棧(面試題30)和兩個棧實現佇列(面試題9),因此結合二者可以完成這道題。

第二種思路:

把有可能成為滑動視窗最大值的數值存入乙個兩端開口的佇列。

deque = collections.deque(

) res, n =

,len

(nums)

for i, j in

zip(

range(1

- k, n +

1- k)

,range

(n))

:if i >

0and deque[0]

== nums[i -1]

: deque.popleft(

)# 刪除 deque 中對應的 nums[i-1]

while deque and deque[-1

]< nums[j]

: deque.pop(

)# 保持 deque 遞減

)if i >=0:

0])# 記錄視窗最大值

return res

劍指Offer59 滑動視窗的最大值

1.維護乙個單調不嚴格遞減佇列deque o n 遍歷起始位置o n 對於每個視窗只需o 1 獲得最大值,空間o k deque最多存當前視窗內的所有元素 當當前視窗內元素不嚴格單減的時候 class solution 陣列為空,或視窗過大或過小 vector int res 存每個視窗的最大值 d...

劍指Offer 面試題59 佇列的最大值

題目 給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,它們的最大值分別為。解決思路 利用雙端佇列 步驟插入數字 滑動視窗 佇列的下標 最大值122 0 2 n a2 32,3 1 3 n a3 42,3,4 2 4 44 2...

劍指offer59題 滑動視窗的最大值

給定乙個陣列 nums 和滑動視窗的大小 k,請找出所有滑動視窗裡的最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3 輸出 3,3,5,5,6,7 1.遍歷每個視窗最大值,存入陣列 class solution res.push back temp left right re...