劍指Offer系列59 2 佇列的最大值

2021-10-05 22:29:10 字數 1620 閱讀 5870

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

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

python

import queue

class

maxqueue

:def

__init__

(self)

: self.deq=queue.deque(

)# 雙端佇列輔助,遞減,儲存極值

self.que=queue.queue(

)# 佇列

defmax_value

(self)

->

int:

return self.deq[0]

if self.deq else-1

# 雙端佇列隊頭值即最大值

defpush_back

(self, value:

int)

->

none

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

]# 保持雙端佇列遞減

self.deq.pop(

) self.que.put(value)

defpop_front

(self)

->

int:

ifnot self.deq:

return-1

res=self.que.get(

)if res==self.deq[0]

:# 同步刪除雙端佇列中的值

self.deq.popleft(

)return res

# your maxqueue object will be instantiated and called as such:

# obj = maxqueue()

# param_1 = obj.max_value()

# obj.push_back(value)

# param_3 = obj.pop_front()

c++
class

maxqueue

intmax_value()

void

push_back

(int value)

deq.

push_back

(value)

; que.

push

(value);}

intpop_front()

que.

pop();

return res;}}

;/**

* your maxqueue object will be instantiated and called as such:

* maxqueue* obj = new maxqueue();

* int param_1 = obj->max_value();

* obj->push_back(value);

* int param_3 = obj->pop_front();

*/

劍指Offer系列59 2 佇列的最大值

請定義乙個佇列並實現函式max value得到佇列裡的最大值,要求函式max value push back和pop front的均攤時間複雜度都是o 1 若隊列為空,pop front和max value需要返回 1 與上題滑動視窗的最大值類似,用單調佇列即可解決,同時維護乙個輔助佇列即可。cla...

劍指Offer 59 2 佇列的最大值

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

59 2 佇列的最大值

實現乙個函式max能夠得到佇列裡的最大值,並且時間複雜度為o 1 很熟悉,以前做過兩個棧實現乙個棧的min,max函式的,這道題變成了佇列 所以,這裡也能夠有相似的思想,我們能不能兩個雙端佇列實現這個的max函式呢?答案是可以的。不過,deque的一些方法我實現是有點記混了,所以在做這道題時想不起來...