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

包含min函数的栈

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

思路:

设置两个栈s1和s2,s1存储所有元素;s2存储历史最小元素(新压入s1的元素小于s2栈顶元素则压入s2中)。取出栈顶元素时,检测是否等于s2栈顶元素,等于则s2和s1栈顶一起弹出。
alt

代码:

public class Solution {

    //设置两个栈s1、s2
    Stack<Integer> s1 = new Stack<Integer>();
    Stack<Integer> s2 = new Stack<Integer>();
    
    public void push(int node) {
        if (s1.size()==0 && s2.size()==0) {
            s1.push(node);
            s2.push(node);
        }
        else {
            if (node<=s2.peek())
                s2.push(node);
            s1.push(node);
        }
    }
    
    public void pop() {
        if (s1.peek().equals(s2.peek()))
            s2.pop();
        s1.pop();
    }
    
    public int top() {
        return s1.peek();
    }
    
    public int min() {
        return s2.peek();
    }
}
全部评论

相关推荐

牛客48784610...:深圳的变成录用进行中,这个是稳了吗,还没有收到邮件
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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