/*
* 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
* 思路:构造一个辅助栈,保证每一次辅助栈压入的都是当前栈的最小元素
*/
import java.util.Stack;
public class FindMinValueOfStack {
Stack<Integer> dataStack = new Stack<Integer>();
Stack<Integer> coopStack = new Stack<Integer>();
public void push(int node) {
dataStack.push(node);
if(coopStack.isEmpty() || node < top()) {
coopStack.push(node);
}
else {
coopStack.push(top());
}
}
public void pop() {
if(!dataStack.isEmpty() && !coopStack.isEmpty()) {
dataStack.pop();
coopStack.pop();
}
}
public int top() {
return coopStack.peek();
}
public int min() {
return top();
}
public static void main(String[] args) {
FindMinValueOfStack t = new FindMinValueOfStack();
t.push(3);
System.out.println(t.min());
t.push(4);
System.out.println(t.min());
t.push(2);
System.out.println(t.min());
t.push(3);
System.out.println(t.min());
t.pop();
System.out.println(t.min());
}
}
《剑指offer》-实现一个能够得到栈最小元素的min函数
最新推荐文章于 2022-05-18 13:37:24 发布