题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路:
栈+数组,数组保存i位之前的min值。coding就完事了。
class Solution {
public:
stack<int> stack;
int a[10000];//前i个元素中,min为多少。
int index=-1;//栈顶指针
void push(int value) {
index++;
stack.push(value);
if(index==0){
a[index]=value;
return;
}
a[index]=a[index-1];
if(a[index]>value) a[index]=value;
}
void pop() {
if(!stack.empty()){
stack.pop();
a[index]=INT_MAX;//这里要初始化,不然,出栈,进栈之后,可能出现问题
index--;
}
}
int top() {
return stack.top();
}
int min() {
if(index==-1) return NULL;
else return a[index];
}
};