import java.util.Stack;
/**
* 面试题30:包含min函数的栈
* 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
* @author
* @create 2021-04-20 22:00
*/
public class Solutin30 {
public static void main(String[] args) {
}
static Stack<Integer> normal = new Stack<>();//数据栈
static Stack<Integer> minstack = new Stack<>();//辅助栈
public static void push(int node){
normal.push(node);//数据栈直接push
if (minstack.isEmpty() || node < minstack.peek()){
minstack.push(node);//当辅助栈为空或者当前值小于辅助栈栈顶元素时,辅助栈压入当前元素
}else{
minstack.push(minstack.peek());//否则压入辅助栈栈顶元素
}
}
public static void pop(){
normal.pop();
minstack.pop();
}
public static int top(){
return normal.peek();
}
public static int min(){
//辅助栈栈顶元素就是最小值
return minstack.peek();
}
}
【剑指Offer】面试题30:包含min函数的栈
最新推荐文章于 2022-03-25 20:56:10 发布