思路:维持两个栈,主栈mystack,min栈minstack。每向主栈中压入一个元素,向min栈压入当前最小值。
public class Solution {
public int[] mystack=new int[100000];
public int[] minstack=new int[100000];
public int top=-1,min=-1;
public void push(int node) {
top++;
mystack[top]=node;
if(top==0){
minstack[top]=node;
}
else{
min=minstack[top-1];
minstack[top]=min<node?min:node;
}
}
public void pop() {
if(top!=-1) top--;
}
public int top() {
if(top!=-1) return mystack[top];
else return -1;
}
public int min() {
if(top!=-1) return minstack[top];
else return -1;
}
}