题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

class Solution {
public:
    //本题需要三个栈,第一个栈是真正的栈,第二个和第三个栈是辅助栈,用来在常数时间里求出最小值min
    stack<int> s1,s2,s3;
    void push(int value) {
        s1.push(value);
        while(!s2.empty()&&value>s2.top()){
            int temp=s2.top();
            s2.pop();
            s3.push(temp);
        }
        s2.push(value);
        while(!s3.empty()){
            int temp=s3.top();
            s3.pop();
            s2.push(temp);
        }
    }
    void pop() {
        int temp=s1.top();
        s1.pop();
        while(s2.top()!=temp){
            int data=s2.top();
            s2.pop();
            s3.push(data);
        }
        s2.pop();
        while(!s3.empty()){
            int data=s3.top();
            s3.pop();
            s2.push(data);
        }
    }
    int top() {
        return s1.top();
    }
    int min() {
        return s2.top();
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务