import java.util.Stack;
/**
* @author chencc
* @Description 获取栈中最小值
* @Date 2022/3/16 15:06
*/
public class GetMinStack {
//构建一个栈
public static class MyStack {
//真实栈用来存放数据
public Stack<Integer> stackData;
//存在当前栈数据中,最小数
public Stack<Integer> stackMin;
//构造器,初始化
public MyStack() {
this.stackData = new Stack<Integer>();
this.stackMin = new Stack<Integer>();
}
//插入数据
public void push(int value) {
//当最小栈为空时,直接插入当前数
if (stackMin.isEmpty()) {
stackMin.push(value);
//当插入数小于当前栈顶的数,直接插入当前数
} else if (value < stackMin.peek()) {
stackMin.push(value);
//此时插入当前栈顶的数
} else {
stackMin.push(stackMin.peek());
}
stackData.push(value);
}
//弹出栈数据
public int pop() {
if (stackData.isEmpty()) {
throw new RuntimeException("当前栈为空");
}
stackMin.pop();
return stackData.pop();
}
//获取栈中最小值
public int getMin() {
if (stackMin.isEmpty()) {
throw new RuntimeException("当前栈为空");
}
return stackMin.peek();
}
}
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.push(3);
stack.push(0);
System.out.println(stack.getMin());
stack.pop();
System.out.println(stack.getMin());
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交