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 思路...