Min Stack问题及解法
来源:互联网 发布:消防工程师软件 编辑:程序博客网 时间:2024/05/16 17:42
问题描述:
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.
MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> Returns -3.minStack.pop();minStack.top(); --> Returns 0.minStack.getMin(); --> Returns -2.问题分析:
push,pop和top操作不用多说,关键是getMin要求在常量时间内找到最小值,一般的思路我们就是以空间换时间,在另一个栈中保存当前栈的最小值,每次查询当前栈最小值时,只需要进行top操作即可。
过程详见代码:
class MinStack {public: vector<int> minstack;vector<int> minvalue; /** initialize your data structure here. */ MinStack() { } void push(int x) { minstack.push_back(x); if(minvalue.empty() || x <= getMin()) minvalue.push_back(x); } void pop() { if(minstack.back() == getMin()) minvalue.pop_back(); minstack.pop_back(); } int top() { return minstack.back(); } int getMin() { return minvalue.back(); }};
0 0
- Min Stack问题及解法
- Min Cost Climbing Stairs问题及解法
- min stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- Min Stack
- 《小强软件测试疯狂讲义-性能及自动化》一书正式发布
- CentOS 6.5安装SVN 客户端TortoiseSVN
- XML的解析
- 查看JDK以及框架源码
- 监听进程并自动重启(两种方法)
- Min Stack问题及解法
- Web前端应该从哪些方面来优化网站?
- iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构
- 决策树构建之ID3算法
- Ansible
- 主题:windows 如何查看端口占用情况?
- Java命名规范与注释规范
- facebook messenger简介
- select、poll、epoll、同步、异步之间的区别总结[整理]