155. Min Stack
一、题目
1、审题
2、分析
设计一个 minStack,使其有 pop、push、top、getMin 功能,且 getMin 的检索时间为常数。
二、解答
1、思路:
采用一个 Stack 进行实现。
①、采用变量 min 记录站中的最小值。
②、若入栈元素 p >= min,则 P 入栈。否则 min 先入栈,p 再入栈,且min 值修改为 P。当 p 出栈时,min即可再次通过出栈获得。
int min = Integer.MAX_VALUE; Stack<Integer> stack = new Stack<>(); /** initialize your data structure here. */ public MinStack() { } public void push(int x) { if(x <= min) { stack.push(min); // 若 min >= x, 将前一个 min 埋在下边一个位置 min = x; } stack.push(x); // x 埋入 } public void pop() { if(stack.pop() == min) // 若出栈元素为 min min = stack.pop(); // 则前一个 min 为再次出栈 } public int top() { return stack.peek(); } public int getMin() { return min; }