包含min函数的栈

包含min函数的栈

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

import java.util.Stack;

public class Solution {
    Stack<Integer> stack = new Stack<Integer>();
    int min;
    
    public void push(int node) {
        if(stack.isEmpty()) {
            min = node;
            stack.push(node);
            return;
        }
        if(node > min) {
            stack.push(node);
            return;
        }
        //当前插入的node是最小值时,将前一个最小值先一步再次压入栈,这样当最小值出栈时能立马知道下一个最小值是谁
        stack.push(min);
        stack.push(node);
        min = node;
    }
    
    public void pop() {
        if(!stack.isEmpty() && stack.peek() == min) {//出栈的是最小值
            //出栈时,先将最小值出栈。这时下一个node就是新的最小值
            stack.pop();
            min = stack.peek();
            stack.pop();
            return;
        }
        stack.pop();
    }
    
    public int top() {
        return stack.peek();
    }
    
    public int min() {
        return min;
    }
}

全部评论

相关推荐

醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务