請定義乙個佇列並實現函式 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 ...