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

包含min函数的栈

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

import java.util.*;
import java.util.Stack;

public class Solution {
    // 用于存储内容的栈
    Stack<Integer> nodeStack = new Stack<>();
    // 用于【同步】存储当前栈中最小值的栈
    Stack<Integer> minStack = new Stack<>();
    
    // 入栈
    public void push(int node) {
        // 两个栈要同步
        
        // 入nodeStack
        nodeStack.push(node);

        // 入minStack
        if (minStack.isEmpty()) {
            // 如果minStack空,则无需比较
            minStack.push(node);
        }
        // 如果minStack非空,则需要比较,将较小的压入minStack
        int min = Math.min(node, minStack.peek());
        minStack.push(min);
    }
    
    // 出栈(只弹出不返回)
    public void pop() {
        // 两个栈要同步
        nodeStack.pop();
        minStack.pop();
    }
    
    // 获得栈顶元素(只返回不弹出)
    public int top() {
        return nodeStack.peek();
    }
    
    // 获得栈中最小元素(只返回不弹出)
    public int min() {
        return minStack.peek();
    }
}

全部评论

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
成功路上的堡垒:教育经历可以写写分数比较高的专业课,附上分数。实习经历写详细一点,用了什么技术,做了什么工作,取得了什么成果。校内经历,奖项证书,自我评价,感觉都可以删掉,没啥意义。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务