import java.util.Stack;
//实现一个栈 获取栈中最小元素的时间复杂度为O(1)
public class MinStack {
private static Stack<Integer> stackData = new Stack<>();
private static Stack<Integer> stackMin = new Stack<>();
public int pop(){
Integer popData = stackData.pop();
//如果取出元素等于最小栈的顶层元素,则弹出最小栈顶层元素
if(popData == stackMin.peek()){
stackMin.pop();
}
return popData;
}
public void push(Integer data){
stackData.push(data);
//如果小于最小栈的顶层元素,则push最小栈
if(stackMin.isEmpty() || data <= stackMin.peek()){
stackMin.push(data);
}
}
public int getMin(){
return stackMin.pop();
}
public static void main(String[] args) {
MinStack minStack = new MinStack();
minStack.push(2);
minStack.push(1);
System.out.println("当前栈最小元素:" + minStack.getMin());
System.out.println("弹出元素:" + minStack.pop());
System.out.println("当前栈最小元素:" + minStack.getMin());
}
}
算法:实现一个栈 获取栈中最小元素的时间复杂度为O(1)
最新推荐文章于 2022-02-01 21:33:14 发布