1. 程式人生 > 其它 >劍指 Offer 棧與佇列

劍指 Offer 棧與佇列

09. 用兩個棧實現佇列

沒啥意思 不要想複雜了 就是暴力

class CQueue {
public:
    CQueue() {

    }
    /*
    一個主棧 一個快取棧 
    來回導 得到隊頭

    copy後一端變空了
    */
    stack<int>stk,cache;
    void copy(stack<int>&a,stack<int>&b){
        while(a.size()){
            b.push(a.top());
            a.pop();
        }
    }
    void appendTail(int value) {
        stk.push(value);

    }
    
    int deleteHead() {
        if(stk.empty())return -1;
        copy(stk,cache);
        int res=cache.top();
        cache.pop();
        copy(cache,stk);
        return res;
    }
};

30. 包含min函式的棧

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {

    }
    stack<int>stk,minn;
    
    void push(int x) {
        stk.push(x);
        if(minn.empty()||minn.top()>=x)minn.push(x);
    }
    
    void pop() { 
        if(stk.top()==minn.top())minn.pop();
        stk.pop();
    }
    
    int top() {
        return stk.top();
    }
    
    int min() {
        return minn.top();
    }
};