Leetcode 佇列的最大值

2021-10-03 21:00:17 字數 973 閱讀 6703

leetcode

請定義乙個佇列並實現函式 max_value 得到佇列裡的最大值,要求函式max_value、push_back 和 pop_front 的均攤時間複雜度都是o(1)。

若隊列為空,pop_front 和 max_value 需要返回 -1

要實現o(1)的時間複雜度,那麼不能每次都對佇列裡的值排序求最大值,需要額外記錄最大值,並且在每次執行完進隊出隊操作後進行更新,那麼可以額外申請乙個佇列來儲存排序後的佇列.

from collections import deque

class

maxqueue

:def

__init__

(self)

: self.queue = deque(

) self.sort = deque(

)def

max_value

(self)

->

int:

if self.sort:

return self.sort[0]

else

:return-1

defpush_back

(self, value:

int)

->

none

:while self.sort and self.sort[-1

]< value:

self.sort.pop(

)def

pop_front

(self)

->

int:

ifnot self.queue:

return-1

res = self.queue.popleft(

)if res == self.sort[0]

: self.sort.popleft(

)return res

佇列的最大值

題目 給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個 滑動視窗,它們的最大值分別為,include include include using namespace std templateclass queuewithmax voi...

佇列的最大值

題目 請定義乙個佇列並實現函式 max value 得到佇列裡的最大值,要求函式max value push back 和 pop front 的均攤時間複雜度都是o 1 若隊列為空,pop front 和 max value 需要返回 1。示例 示例 1 輸入 maxqueue push back...

佇列的最大值

示例 1 輸入 maxqueue push back push back max value pop front max value 1 2 輸出 null,null,null,2,1,2 示例 2 輸入 maxqueue pop front max value 輸出 null,1,1 2.1 思路...