【单调队列】leetcode MinStack
来源:互联网 发布:淘宝淘金币怎么用 编辑:程序博客网 时间:2024/06/05 04:28
题目在这里:https://oj.leetcode.com/problems/min-stack/
和普通的栈只有一点区别,就是要能够支持常数时间的最小值抽取。只要维护一个单调队列就可以了,从队首到队尾非降排序。
对于三种操作:
① 新来一个元素,如果该元素不大于队首的元素,则入队,否则不入队(直观上理解,你来得晚而且数值还大,以后肯定不会是最小值的);
② 删除元素时,比较当前待删除的元素和队首元素是否相等,相等则把队首元素删除,否则什么都不做;
③ 取最小值很简单啦,把队首元素作为结果返回就可以了。
class MinStack {public: stack<int> data; stack<int> mn; void push(int x) { data.push(x); if (mn.empty() || mn.top() >= x) mn.push(x); } void pop() { if (data.top() == mn.top()) mn.pop(); data.pop(); } int top() { return data.top(); } int getMin() { return mn.top(); }};
0 0
- 【单调队列】leetcode MinStack
- leetcode-MinStack
- LEETCODE-MinStack
- leetcode 第160题 MinStack
- MinStack
- MinStack
- minStack
- MinStack
- MinStack
- LeetCode题解:MinStack(三种解法)
- 单调栈 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 单调队列
- 最优二叉树的搜索期望代价
- ASCII,Unicode,UTF-8编码
- Android之增长的数字
- Ofbiz tenant架构配置
- Segmentation fault 定位
- 【单调队列】leetcode MinStack
- C++ Primer 笔记 一
- hdu3001——Travelling 三进制TSP, 状态压缩
- 第十二周项目 3 用递归方法求解(输出Fibnacci序列的第20个数)
- 为什么现在是创业的最好时代
- fragment+viewpager学习二(fragment间的跳转) 更新中
- 算法导论-------------快排的研究
- Struts2文件上传
- 利用Java反射机制和POI实现导出Excel功能