1. 程式人生 > 其它 >leetcode225_用佇列實現棧

leetcode225_用佇列實現棧

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(); */
縱一葦之所如,臨萬頃之茫然。