LeetCode之Min Stack 实现最小栈
LeetCode相关的网上资源比较多,看到题目一定要自己做一遍,然后去学习参考其他的解法。
链接: https://oj.leetcode.com/problems/min-stack/
题目描述:
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.
设计一个最小栈,支持入栈,出栈,获取栈顶元素,获取栈最小值,要求时间复杂度0(1).
Stack(栈)是First in-Last out的数据结构。如果不考虑时间复杂度,实现题目的要求都比较简单,现在限定了不超过常量时间O(1),
就不能用简单的排序过滤实现了。
另外,栈顶(top)指的是允许操作数据的一端,要与堆栈中高低地址不同的栈顶和栈底区别开来,以前我经常搞混。
public class MinStack {
    //声明数据栈
    private Stack<Integer> elementsStack=new Stack<Integer>();
    //声明辅助栈
    private Stack<Integer> supportStack=new Stack<Integer>();
    /**
     * 考虑到时间复杂度的需求,添加一个辅助栈,
     * 每次入栈时将元素分别存入数据栈和辅助栈,
     * 辅助栈中的数据始终保持最小值在栈顶,需要获取最小值时,直接Peek()辅助栈即可。
     */
    public static void main(String[] args){
        MinStack minStack=new MinStack();
       //以下测试用例
        minStack.push(0);
        minStack.push(1);
        minStack.push(0);
        System.out.print(minStack.getMin());
        minStack.pop();
        System.out.print(minStack.getMin());
    }
    public void push(int x) {
        //始终保持辅助栈顶是最小元素
        if(supportStack.empty() || x <= supportStack.peek()){
            supportStack.push(x);
        }
        elementsStack.push(x);
    }
    public void pop() {
        //更新辅助栈
        if(elementsStack.peek().equals(supportStack.peek())){
            supportStack.pop();
        }
        elementsStack.pop();
    }
    public int top() {
        return elementsStack.peek();
    }
    public int getMin() {
        //辅助栈
        return supportStack.peek();
    }
}
提交,可以AC.
LeetCode之Min Stack 实现最小栈的更多相关文章
- LeetCode 155 Min Stack(最小栈)
		翻译 设计支持push.pop.top和在常量时间内检索最小元素的栈. push(x) -- 推送元素X进栈 pop() -- 移除栈顶元素 top() -- 得到栈顶元素 getMin() -- 检 ... 
- LeetCode OJ:Min Stack(最小栈问题)
		Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ... 
- Leetcode 946. Validate Stack Sequences 验证栈序列
		946. Validate Stack Sequences 题目描述 Given two sequences pushed and popped with distinct values, retur ... 
- [LeetCode] 155. Min Stack 最小栈
		Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ... 
- [LeetCode] 0155. Min Stack 最小栈 & C++Runtime加速
		题目 Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. ... 
- leetcode   155. Min Stack  --------- java
		Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ... 
- Java [Leetcode 155]Min Stack
		题目描述: Design a stack that supports push, pop, top, and retrieving the minimum element in constant ti ... 
- leetCode(45):Min Stack
		Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ... 
- leetcode 155. Min Stack 、232. Implement Queue using Stacks 、225. Implement Stack using Queues
		155. Min Stack class MinStack { public: /** initialize your data structure here. */ MinStack() { } v ... 
随机推荐
- HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
			转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ... 
- ExtJS入门教程06,grid分页的实现
			前面两篇内容分别介绍了extjs grid的基本用法和extjs grid异步加载数据,这篇文章将介绍extjs grid的分页. 数据量大的时候我们必须用到分页,结合上一篇的异步加载数据,今天我们就 ... 
- hdu 2049 不容易系列之(4)——考新郎
			在本博AC代码中,求CNM用的是Anm/amm没用阶乘的形式,两者皆可 #include <stdio.h> int main(void) { long long a,b,larr[21] ... 
- linux find 命令详解
			Linux下 利用find命令删除所有vssver2.scc文件 删除所有vssver2.scc文件 这是我当初查找 Linux find 命令的目的所在 1) find / -name ‘vssv ... 
- 把电脑装成ubuntu系统了
			2014年一月11日 今天本来想在自己的电脑上装双系统,电脑本来有个win7,想再装一个ubuntu. 本来想用wubi装,可是wubi没法安装13.10,并且wubi安装后,读写速度也不快. 在网上 ... 
- zstu.4194: 字符串匹配(kmp入门题&& 心得)
			4194: 字符串匹配 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 206 Solved: 78 Description 给你两个字符串A,B,请 ... 
- 避免使用CSS表达式
			http://www.cnblogs.com/chenxizhang/archive/2013/05/01/3053439.html 这一篇我来和大家讨论个原则:Avoid CSS Expressio ... 
- IOS 入门开发之创建标题栏UINavigationBar的使用(二)
			IOS 入门开发之创建标题栏UINavigationBar的使用 http://xys289187120.blog.51cto.com/3361352/685746 IOS 开发有关界面的东西 ... 
- [codeforces 260]B. Ancient Prophesy
			[codeforces 260]B. Ancient Prophesy 试题描述 A recently found Ancient Prophesy is believed to contain th ... 
- [BZOJ3872][Poi2014]Ant colony
			[BZOJ3872][Poi2014]Ant colony 试题描述 There is an entrance to the ant hill in every chamber with only o ... 
