题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路:
两个栈,data存数据,min存储当前数据的最小值。
data栈 和 min栈同时出栈,min栈中存储的是当前个数的data栈中的最小值。
如:进栈顺序 2,3,4,1,5,6,7
data数据:2,3,4,1,5,6,7
min数据:2,2,2,1,1,1,1
C++
class Solution {
public:
stack<int> stack_data;
stack<int> stack_min;
void push(int value) {
if(stack_data.empty())
{
stack_data.push(value);
stack_min.push(value);
}else{
stack_data.push(value);
stack_min.push(value<stack_min.top()?value:stack_min.top());
}
}
void pop() {
stack_data.pop();
stack_min.pop();
}
int top() {
return stack_data.top();
}
int min() {
return stack_min.top();
}
};