您的位置:首页 > 其它

IMWeb提升营Day4 | 训练题20:包含min函数的栈

2017-05-28 14:39 232 查看

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

- 解读:实现一个栈,能够得到栈最小元素的min函数,要求复杂度为O(1)

思路

/*
* 思路:用两个栈结构来完成这个功能,用一个栈data保存数据,用另外一个栈min保存依次入栈最小的数
* 比如,data中依次入栈,5,  4,  3, 8, 10, 11, 12, 1
则min依次入栈,5,  4,  3,no,no, no, no, 1

* no代表此次不入栈
* 每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不入栈。
*/
class Solution {
public:
stack<int> dataStack;
stack<int> minStack;
void push(int value) {
dataStack.push(value);
if(minStack.empty()){
minStack.push(value);
}else{
if(minStack.top() > value){
minStack.push(value);
}
}
}
void pop() {
if(!minStack.empty() && minStack.top() == dataStack.top()){
minStack.pop();
}
dataStack.pop();
}
int top() {
return dataStack.top();
}
int min() {
return minStack.top();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: