栈-E155-最小栈

2019-03-23  本文已影响0人  三次元蚂蚁

题目

  1. push(x):将x入栈
  2. pop():将栈顶元素出栈
  3. top():获取栈顶元素
  4. getMin():取得栈中最小元素

出处:https://leetcode-cn.com/problems/min-stack/

思路

注意:如果栈中没有元素,则直接入栈即可

代码

class MinStack {
    private Node dummyHead;
    
    /** initialize your data structure here. */
    public MinStack() {
        dummyHead = new Node(0);
    }
    
    public void push(int x) {
        Node newNode = new Node(x);
        if (dummyHead.next != null) {
            if (newNode.minValue > getMin()) {
                newNode.minValue = getMin();
            }
        }
        newNode.next = dummyHead.next;
        dummyHead.next = newNode;
    }
    
    public void pop() {
        Node delNode = dummyHead.next;
        dummyHead.next = delNode.next;
        delNode.next = null;
        delNode = null;
    }
    
    public int top() {
        return dummyHead.next.value;
    }
    
    public int getMin() {
        return dummyHead.next.minValue;
    }
    
    class Node {
        int value;
        Node next;
        int minValue;
        public Node(int value) {
            this.value = value;
            this.next = null;
            this.minValue = value;
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读