劍指Offer 佇列的最大值

2021-10-18 23:09:00 字數 958 閱讀 3318

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

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

示例 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]

那麼如何高效實現乙個始終遞減的佇列呢?我們只需要在插入每乙個元素 value 時,從佇列尾部依次取出比當前元素 value 小的元素,直到遇到乙個比當前元素大的元素 value 即可。

上面的過程需要從佇列尾部取出元素,因此需要使用雙端佇列來實現。另外我們也需要乙個輔助佇列來記錄所有被插入的值,以確定 pop_front 函式的返回值。

保證了佇列單調遞減後,求最大值時只需要直接取雙端佇列中的第一項即可。

**實現:

class

maxqueue

intmax_value()

void

push_back

(int value)

d.push_back

(value)

; q.

push

(value);}

intpop_front()

};

佇列的最大值 劍指Offer

題目描述 定義乙個佇列並實現函式 max value 得到佇列裡的最大值,要求函式max value push back 和 pop front 的均攤時間複雜度都是o 1 若隊列為空,pop front 和 max value 需要返回 1 題解 我對於這道題,剛開始看的稍微有點懵,後來才知道是描...

劍指offer之佇列的最大值

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

劍指Offer 查詢佇列中的最大值

題目描述 給定乙個陣列和滑動視窗k的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 分別找出這6個滑動視窗中的最大值,並儲存到乙個列表中。最簡單的思路就是分別找到這些滑動視窗,並用乙個陣列來儲存,...