包含min函数的栈
问题描述:包含min函数的栈
首先考察基本功,栈的数据结构
本方法思想:创建一个辅助站来实现保存当前最小数据,所以现在有两个栈,一个是数据栈,一个是辅助站(存放最小数值),数据栈正常压栈出栈;对于辅助栈,如果压入的数据比min小,则压入,如果压入的数据比min大,则压入min,这样就能确保每次弹出的是当前最小的值。
持续更新...
代码附下
Java实现:
package 包含min函数的栈;
import java.util.Stack;
public class MyStack {
Stack<Integer> data = new Stack<Integer>();
Stack<Integer> minData = new Stack<>();
public void push(int val) {
data.push(val);
if (minData.isEmpty() || val <= minData.peek()) {
minData.push(val);
} else {
minData.push(minData.peek());
}
System.out.println(val + "已经入栈,并且当前最小的为:" + minData.peek());
}
public void pop() {
int i;
if (!data.isEmpty()) {
i = data.pop();
minData.pop();
System.out.println("当前弹出的是" + i + ",并且当前最小值为:" + minData.peek());
} else {
System.out.println("已经没有数据了!");
}
}
public int min() {
return minData.peek();
}
//测试
public static void main(String[] args) {
MyStack stack = new MyStack();
stack.push(3);
stack.push(4);
stack.push(2);
stack.push(1);
stack.pop();
stack.pop();
stack.push(0);
}
}
持续更新...欢迎赞赏!
主页:https://blog.youkuaiyun.com/ustcer_93lk/article/details/80374008
如果有问题,欢迎大家留言,有更好的方法也期待大家告知。