• Easy | LeetCode 155 | 剑指 Offer 30. 包含min函数的栈 | 设计


    剑指 Offer 30. 包含min函数的栈

    难度简单81

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.min();   --> 返回 -3.
    minStack.pop();
    minStack.top();      --> 返回 0.
    minStack.min();   --> 返回 -2.
    

    提示:

    1. 各函数的调用总次数不超过 20000 次

    解题思路

    设计一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。

    class MinStack {
    
        private LinkedList<Integer> stack;
        private LinkedList<Integer> minNumberStack;
    
        /** initialize your data structure here. */
        public MinStack() {
            stack = new LinkedList<Integer>();
            minNumberStack = new LinkedList<Integer>();
            minNumberStack.addLast(Integer.MAX_VALUE);
        }
        
        public void push(int x) {
            minNumberStack.addLast(Math.min(x, getMin()));
            stack.addLast(x);
        }
        
        public void pop() {
            stack.removeLast();
            minNumberStack.removeLast();
        }
        
        public int top() {
            return stack.getLast();
        }
        
        public int getMin() {
            return minNumberStack.getLast();
        }
    }
    
  • 相关阅读:
    人月神话阅读笔记之二
    第二阶段:团队开发Fooks第三天
    第二阶段:团队开发Fooks第二天
    第二阶段:团队开发Fooks第一天
    第十三周进度总结
    人月神话阅读笔记之一
    第一阶段意见评论
    拓扑排序
    欧拉回路
    矩阵优化
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14295471.html
Copyright © 2020-2023  润新知