参考资料:
自己思路
思路:
栈的底层容器可以是vector
关键词:
栈的底层容器可以是vector
自己的解法:
class Solution {
public:
void push(int value) {
result.push_back(value);
}
void pop() {
result.pop_back();
}
int top() {
return result[result.size()-1];
}
int min() {
vector<int> tmp;
tmp = result;
sort(tmp.begin(),tmp.end());
return tmp[0];
}
vector<int> result;
};
//思路:干啥呢?
//栈的底层容器可以是vector
//
标准答案:
class Solution {
public:
//本题的目标就是给栈增加一个新功能
//新建两个栈,1个是数据栈,一个是辅助栈
stack<int> datastack;
stack<int> helpstack;
int tmp=0;
void push(int value) {
//如果这个值比之前的小,压入数据栈和辅助栈,刚开始栈是空的
if(value<tmp||datastack.empty())
{
tmp = value;
datastack.push(value);
helpstack.push(value);
}
else
{
//如果这个值比较大的话,压入数据栈,辅助栈压入的还是之前的
datastack.push(value);
helpstack.push(tmp);
}
}
void pop() {
datastack.pop();
helpstack.pop();
}
int top() {
//datastack栈顶保存的就是最小值
int num = datastack.top();
return num;
}
int min() {
//helpstack栈顶保存的就是最小值
int num = helpstack.top();
return num;
}
};