题解 | #包含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();
}
}
小天才公司福利 1247人发布
查看8道真题和解析