leetcode225_用佇列實現棧
阿新 • • 發佈:2021-12-12
1、題目
2、分析
其實一個佇列就可以了,就是我們使用一個佇列,當需要查詢stack頭部的元素的時候,可以將其他元素彈出,然後壓如的元素底部。
這樣pop是O(n)的操作,而其他的是O(1)的操作(如果不考慮queue內部實現複雜度的話)
3、程式碼
class MyStack { public: queue<int> pre; MyStack() { } void push(int x) { pre.push(x); } int pop() { int size = pre.size(); size縱一葦之所如,臨萬頃之茫然。= size-1; //彈出n-1個數字,然後重新壓如 while(size){ int num = pre.front(); pre.pop(); pre.push(num); size--; } int num_pre = pre.front(); pre.pop(); return num_pre; } int top() { int size = pre.size(); size= size-1; //彈出n-1個數字,然後重新壓如 while(size){ int num = pre.front(); pre.pop(); pre.push(num); size--; } int num_pre = pre.front(); pre.pop(); pre.push(num_pre); return num_pre; } bool empty() {return pre.empty(); } }; /** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */