Min Stack
题意:给定一个类和几个描述好的操作,实现它。是一个能够输出最小值的类。
这道题目有点回到了ACM的感觉。明确以下几点:
1、stack是一个和时间相关的
2、某一个时刻的stack从top到i的最小值给划分的话,发现随着i从栈顶到栈底是依次递增的(有着单调性)
认识到这么一个单调性的话就很好做了
import java.util.Stack;
class MinStack {
Stack<Integer> s = new Stack<Integer>();
Stack<Integer> min = new Stack<Integer>();
public void push(int x) {
s.push(x);
if (min.isEmpty() || min.peek() >= x)
min.push(x);
}
public void pop() {
if (s.peek().equals(min.peek()))
min.pop();
s.pop();
}
public int top() {
return s.peek();
}
public int getMin() {
return min.peek();
}
}
Min Stack
题意:给定一个类和几个描述好的操作,实现它。是一个能够输出最小值的类。
这道题目有点回到了ACM的感觉。明确以下几点:
1、stack是一个和时间相关的
2、某一个时刻的stack从top到i的最小值给划分的话,发现随着i从栈顶到栈底是依次递增的(有着单调性)
认识到这么一个单调性的话就很好做了