题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
题目分析
实现栈结构,需要考虑的是不要用最复杂的栈实现去思考,因为重点是实现带有getMin功能的栈,由于栈是常用的数据结构,所以实现的时候考虑用最快的O(1)时间复杂度,效率更高,但是需要承担的就是额外空间复杂度。注意的地方有两点:
1.push和pop时同时的,需要同时压栈或者出栈,不然会导致不平衡,输出结果会出现问题
2.pop的思想和delete类似,是在栈中倒掉元素的意思
class Solution {
public:
stack<int> minStack,st;
void push(int value) {
st.push(value);
minStack.push(minStack.empty()||minStack.top()>value?value:minStack.top());
}
void pop() {
st.pop();
minStack.pop();
}
int top() {
return st.top();
}
int min() {
return minStack.top();
}
};