LeetCode Min Stack
来源:互联网 发布:网络信号监控下载 编辑:程序博客网 时间:2024/05/29 13:57
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
思路分析:这题主要考察栈的使用,唯一tricky的地方是如何在常数时间内得到最小值,我们可以考虑使用两个栈,一个栈seqStack用于维护入栈的顺序,操作同普通的栈,另一个minStack栈用于维护最小值,当出现比栈顶元素更小或者相等的数的时候,要入栈,使得栈顶元素总是最小值。这样getMin函数只要取维护最小值栈的栈顶元素即可。有一个容易出错的地方是删除元素的时候除了从seqStack里面删除栈顶元素之外,还需要从minStack的栈顶做检查,如果删除的刚好是最小元素,应该把minStack的栈顶也删除。
AC Code
class MinStack { Stack<Integer> seqStack = new Stack<Integer>(); Stack<Integer> minStack = new Stack<Integer>(); public void push(int x) { int curMin; if(minStack.isEmpty()){ curMin = Integer.MAX_VALUE; } else{ curMin = minStack.peek(); } if(x <= curMin) minStack.push(x); seqStack.push(x); } public void pop() { if(seqStack.isEmpty()) return; else { int removedValue = seqStack.pop(); if(removedValue == minStack.peek()){ minStack.pop(); } } } public int top() { return seqStack.peek(); } public int getMin() { return minStack.peek(); }}
0 0
- LeetCode[stack]: Min Stack
- [leetcode][stack] Min Stack
- 【Leetcode】Min Stack
- Leetcode: Min Stack
- leetcode Min stack
- Min Stack -- LeetCode
- Leetcode: Min Stack
- 【LeetCode】Min Stack
- leetcode Min Stack
- leetcode--Min Stack
- [Leetcode]Min stack
- leetcode:Min Stack
- leetcode 之 Min Stack
- leetcode Min Stack
- LeetCode(155) Min Stack
- [LeetCode]Min Stack
- leetcode:Min Stack
- leetcode - Min Stack
- POJ 3258 River Hopscotch(二分·最小距离最大)
- Android 4主线程访问网络
- Netty百万级推送服务设计要点
- MFC工具栏将位图分隔为图标的问题
- maximo系统任务集成
- LeetCode Min Stack
- STL map中key为结构体的用法
- 设计模式 观察者模式 以微信公众服务为例
- Hive 连接函数 concat
- Windows下使用sbt打造Intellij Idea环境下Spark源码阅读环境
- 操作系统常见面试题
- pulltorefresh(三)自动刷新
- MFC窗体滑动、缩放、渐变动态效果的实现 .
- IaaS, PaaS和SaaS