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

包含min函数的栈

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

/**使用一个主栈用来存储数据,一个最小值栈,用来存放最小值。
 *主栈和最小值栈的容量和存储数据量没有必要保持一致。
 */
import java.util.Stack;

public class Solution {
    
    Stack<Integer> stackMain = new Stack<>(); // 主栈,存储所有数据
    Stack<Integer> stackMin = new Stack<>(); // 最小值栈,存储最小值
    
    public Solution() {
        stackMain = new Stack<>();
        stackMin = new Stack<>();
    }

    // 测试主栈和最小值栈是否为空
    public boolean empty() {
        return stackMain.empty() && stackMin.empty();
    }
    
    // 入栈操作,如果主栈和最小值栈都为空,则同时入栈
    // 如果不为空,入栈元素和最小值栈顶部元素对比
    public void push(int node) {
        Stack<Integer> tmp = new Stack<>();
        if (empty()) {
            stackMain.push(node);
            stackMin.push(node);
        }
        stackMain.push(node);
        if (stackMin.peek() >= node)
            stackMin.push(node);
    }
    
    // 出栈操作,先判断出栈元素是否是最小值
    public void pop() {
        if (stackMain.peek() == stackMin.peek())
            stackMin.pop();
        stackMain.pop();
    }
    
    // 返回栈顶元素
    public int top() {
        return stackMain.peek();
    }
    
    // 返回最小值
    public int min() {
        return stackMin.peek();
    }
}


全部评论

相关推荐

2025-12-29 20:37
已编辑
清华大学附属小学 Java
哇哇的菜鸡oc:1.为什么要写这么多内容呀 2.什么叫做简历 3.什么样的内容可以写到简历上 4.项目可以包装,但是要有理有据呀,不能乱包装呀,比如 跨境能达到日均120万订单的在国内都是能叫的上名字的,而且这些工作也基本上不太会交给一个实习生去做 建议友友可以去网上或者找同学的简历看看,他们的简历是怎么写的,去找找上面的那四个问题的答案吧,然后要记住的是Java是服务于业务的,而不是服务于微服务或者技术的
最后再改一次简历
点赞 评论 收藏
分享
牛客49732338...:同志们,已拿下
我的OC时间线
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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