// 题目:写一个模拟栈的类,而且要多一个输出当前最小值的函数min()
// 解法:加入最小数栈,将每次输入的数与栈顶数进行比较并进行相应的操作
class myStack{
private static int index = -1; //index表示当前指针
private static int[] value = new int[999]; //保存元素
private static int[] minValue = new int[999]; //保存最小值
public void push(int input){
index++;
value[index] = input;
if(index == 0){
minValue[index] = input;
}else{
if(minValue[index-1]>input){ //如果比当前值小则存入更新这个元素加入后的最小值
minValue[index] = input;
}else{
minValue[index] = minValue[index-1];
}
}
}
public int peek(){
if(index == -1){
System.out.println("null");
return -1;
}
return value[index];
}
public int min(){
if(index == -1){
System.out.println("null");
return -1;
}
return minValue[index];
}
public int pop(){
if(index == -1){
System.out.println("null");
return -1;
}
index--;
return value[index+1];
}
public boolean isEmpty(){
if(index == -1){
return true;
}else{
return false;
}
}
}
public class Main {
public static void main(String[] args) {
myStack s = new myStack();
s.push(1);
System.out.println(s.pop());
System.out.println(s.min());
System.out.println(s.isEmpty());
}
}
剑指offer 21. 包含min函数的栈
最新推荐文章于 2022-11-18 12:08:11 发布