佇列的最大值

2021-10-11 14:43:11 字數 1114 閱讀 1965

示例 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  思路分析

該題類似於上一題中求滑動視窗的最大值,在這裡我們要建兩個佇列,乙個是普通佇列,用來儲存加入佇列的元素,以便pop操作,乙個是雙端佇列,保證其是非嚴格遞減的;

雙端佇列可以看作是乙個滑動視窗,入隊就是視窗的右邊界右移,出隊就是將視窗的左邊界右移;

入隊時要保證雙端佇列的非嚴格遞減,出隊時同理;

2.2  **實現

class maxqueue 

public int max_value()

return deque.peekfirst();

}public void push_back(int value)

deque.addlast(value);

queue.add(value);

}public int pop_front()

int ans = queue.poll();

if(ans == deque.peekfirst())

return ans;

}}/**

* 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();

*/

2.3  複雜度分析

佇列的最大值

題目 給定乙個陣列和滑動視窗的大小,請找出所有滑動視窗裡的最大值。例如,如果輸入陣列及滑動視窗的大小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...

滑動視窗的最大值 佇列的最大值

請定義乙個佇列並實現函式max得到佇列裡的最大值,要求函式max push back和 pop front的時間複雜度都是o 1 在佇列中維護乙個儲存最大值的佇列,當pop和push操作的同時也對最大值佇列進行維護。當彈出的時佇列中的最大值時,也彈出最大值佇列的頭,當壓入新值時,對最大值佇列從後向前...