面試題59 II 佇列的最大值

2022-03-20 01:29:32 字數 1187 閱讀 4124

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

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

class maxqueue 

};public maxqueue()

public int max_value()

public void push_back(int value)

public int pop_front()

}/**

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

*/

使用兩個佇列來實現,原理是入隊時乙個正常出入隊,乙個是max隊,存放最大值資訊,這裡的關鍵是對於入隊而言,如果入隊的這個值要比佇列最後乙個值要小,那麼可以直接入隊,不然大的話,就要刪去前面比它小的值,容易理解為對於list而言這個位置比之前的幾個位置的最大值大的話,那麼他就是最大值了,所以max佇列的結構是降序排列的,如果出現乙個最大的要加入,那麼之前所有元素都要去除,如果不是最大,那麼也要去除在他之前比他大的元素,知道遇到乙個比他要小的。

class maxqueue 

public int max_value()

public void push_back(int value)

public int pop_front()

}/**

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

*/

面試題59 II 佇列的最大值

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

面試題59 II 佇列的最大值(中等題)

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

LeetCode佇列 面試題59 II佇列的最大值

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