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

包含min函数的栈

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

使用两个栈:
一个栈存值。例如 push 1, push -1, push 2,对应的栈就是 [1, -1, 2]
另一个栈存min值。例如 push 1, push -1, push 2,对应的栈是 [1, -1, -1]
min栈存入的时候,需要看是不是比栈顶的元素小,选择小的元素入栈,当pop的时候,两个栈一起出就就可以了。

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

public class Solution {

    private Stack<Integer> valStack = new Stack<>();
    private Stack<Integer> minStack = new Stack<>();

    public void push(int node) {
        valStack.push(node);
        if (minStack.isEmpty()) {
            minStack.push(node);
        } else {
            int top = minStack.peek();
            int min = Math.min(top, node);
            minStack.push(min);
        }
    }

    public void pop() {
        valStack.pop();
        minStack.pop();
    }

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

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

相关推荐

11-14 17:28
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务