题解 | JZ21 栈的压入、弹出序列

  • 头记:这道题不理解他需要做什么?并没有像力扣225.队列实现栈 或者是232.栈实现队列 这样明确说明问题。
  • 理解:本题实际上就是通过栈来实现栈,本题关键点是在O(1)空间下,来记录栈中的最小值
  • 时间:2021年8月3号
import java.util.Stack;
/***
   头记:这道题确实看不懂他想要做什么?

   理解:实际上可以通过栈来实现栈,本题关键点是在O(1)空间下,来记录栈中的最小值
*/
public class Solution {

    Stack<Integer> stack = new Stack<>();
    Stack<Integer> helper = new Stack<>(); //辅助栈,用来存贮记录栈中已存在的最小值

    public void push(int node) {
        //将node放入stack中,并将最小值更新

        //判断最小值,是否需要更新
//         if (helper == null) { //此处不可以使用helper == null,会出现越界情况,可以使用isEmpty()
//             helper.push(node);
//         } else {
//             if (helper.peek() >= node) {
//                 //如果当前节点大于即将添加的元素node,则更新min();
//                 helper.push(node); 
//             } else {
//                 helper.push(helper.peek());
//             }
//         }
         //判断最小值,是否需要更新
        if (helper.isEmpty() || helper.peek() >= node) { //此处不可以使用helper == null,会出现越界情况,可以使用isEmpty()
            helper.push(node);
        } else {
            //如果当前节点大于即将添加的元素node,则更新min();
            helper.push(helper.peek());
        }

        stack.push(node);
    }

    public void pop() {
        helper.pop();
        stack.pop();
    }

    public int top() {
        return stack.peek();
    }

    public int min() {
        return helper.peek();
    }
}
全部评论

相关推荐

湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
真烦好烦真烦:牛友太有实力了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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