Min Stack
来源:互联网 发布:dota1深渊领主技能数据 编辑:程序博客网 时间:2024/05/01 00:26
这道题目思路就一个,就是如何存储最小元素这一问题。
题目链接:https://oj.leetcode.com/problems/min-stack/
算法描述:
1.数值栈:cowboyStack, 最小栈:cowboyMiniStack
2.入栈x时,如果cowboyStack是空的,则将x分别雅茹cowboyStack、cowboyMiniStack中
3.入栈x时,如果cowboyStack不是空的,比较x和cowboyMiniStack的栈顶,如果x小于cowboyMiniStack的栈顶元素,则x压入cowboyMiniStack
4.出栈时,如果cowboyStack栈顶和cowboyMiniStack栈顶元素相同,则cowboyStack栈顶出栈的同时,cowboyMiniStack的栈顶元素也出栈。
代码:
class MinStack {
public:
stack<int> cowboyStack;
stack<int> cowboyMiniStack;
public:
void push(int x) {
cowboyStack.push(x);
if (cowboyMiniStack.size()==0) {
cowboyMiniStack.push(x);
}else if(x<=cowboyMiniStack.top()){
cowboyMiniStack.push(x);
}
}
void pop() {
if (cowboyStack.size()<=0) {
return;
}
//pop miniStack
if (cowboyMiniStack.top() == cowboyStack.top()) {
cowboyMiniStack.pop();
}
//pop stack
cowboyStack.pop();
}
int top() {
//stack's size is larger than zero
if (cowboyStack.size()>0) {
return cowboyStack.top();
}
//stack is empty
return -1;
}
int getMin() {
//stack's size is larger than zero
if (cowboyMiniStack.size()>0) {
return cowboyMiniStack.top();
}
//stack is empty
return -1;
}
};
效率:
- 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
- Min Stack
- Min Stack
- IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS
- 第十七周项目5(部分) 该年第几秒
- Unity布料
- 第十六周项目2.1连续字符串 用数组名做参数
- Mac 下SVN 的配置(Xcode6.1下)
- Min Stack
- android R
- ScheduledExecutorService定时周期执行指定的任务
- 二叉排序树的遍历及输出
- Java基础5----初始化顺序
- ubuntu APT-GET工作原理
- 第十七周 OJ 用数字造数字
- 奇怪的curl 403错误
- Android.mk 用法介绍