1.两个栈,栈A入栈,栈B存储与栈A实时变化中最小的元素
import java.util.*;
public class Solution {
Stack<Integer> stackA = new Stack<>(); //入栈的值存放在这
Stack<Integer> stackB = new Stack<>(); //存放最小的值
ArrayList<Integer> list = new ArrayList<>();
public int[] getMinStack (int[][] op) {
for(int[] opt:op){
if(opt[0] == 1)
push(opt[1]); //为1的时候 则为入栈
else if(opt[0] == 2)
pop(); //为2的时候,出栈
else
list.add(getMin());
}
int[] res = new int[list.size()];
for(int i = 0; i < list.size(); i++)
res[i] = list.get(i);
return res;
}
public void push(int value){
stackA.push(value);
if(stackB.isEmpty())
stackB.push(value);
else{
if(value <= stackB.peek()){
stackB.push(value);
}
}
}
public void pop(){
int val = stackA.pop();
if(val == stackB.peek())
stackB.pop();
}
public int getMin(){
return stackB.peek();
}
} 2.一个栈+一个数组也能维护

京公网安备 11010502036488号