题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
结果
运行时间:3ms
占用内存:480k
知识点
代码
class Solution {
public:
/*
这个题目没看懂,试着去理解一下已有的代码。。。。难受啊!!! 题目都看不懂了。那是没看代码前!!!一个比代码还难理解的题目!!!
根据代码我的理解是:st为存储栈,smin为min最小值输出栈;使用smin把st中的最小值输出!
对两个栈操作,同时压栈 出栈 (不同条件实现找到一个栈中的最小元素)
*/
void push(int value) {
st.push(value);//压栈
if(smin.empty())//如果最小为空
smin.push(value);//最小栈也压栈
if(smin.top()>value)//如果栈顶元素值大于将要压栈值
smin.push(value);//将值压栈
}
void pop() {
if(smin.top()==st.top())//如果smin栈顶元素等于st元素
smin.pop();//smin出栈
st.pop();//st出栈
}
int top() {//返回st栈顶元素
return st.top();
}
int min() {//返回smin栈顶元素
return smin.top();
}
private:
stack<int> st;//定义栈,
stack<int> smin;//又定义一个栈?
};