展展示型网站开发,如何做网站网页费用,wordpress 服务器迁移,wordpress首页刷新不变LeetCode 155. 最小栈
题目描述
设计一个支持 push #xff0c;pop #xff0c;top 操作#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int …LeetCode 155. 最小栈
题目描述
设计一个支持 push pop top 操作并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。
思路
思路一个栈栈内元素存储一个数组实现其中第一个元素是存储元素值第二个元素是存储的栈中元素最小值 第一步定义队列Dequeint[] deque; 第二步MinStack()初始化deque new ArrayDeque(); 第三步void push(int val)压入栈时判断需要存储的数组的第二个元素大小① 如果栈为空则deque.push(new int[]{val, val}); ② 如果栈不为空如果deqeue.peek()[1]val则deque.push(new int[]{val, val}); 否则deque.push(new int[]{val,deque.peek()[1]}); 第四步void pop()deque.pop()即可 第五步int top()return deque.peek()[0]即可 第六步int getMin()return deque.peek()[1]即可
代码
class MinStack {Dequeint[] deque;public MinStack() {deque new ArrayDeque();}public void push(int val) {if (deque.isEmpty()) {deque.push(new int[]{val, val});} else {int[] peek deque.peek();if (peek[1] val) {deque.push(new int[]{val, peek[1]});} else {deque.push(new int[]{val, val});}}}public void pop() {deque.pop();}public int top() {return deque.peek()[0];}public int getMin() {return deque.peek()[1];}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj new MinStack();* obj.push(val);* obj.pop();* int param_3 obj.top();* int param_4 obj.getMin();*/