题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
发现很多用java的代码很多比c++短,喵~
实现几个函数的功能
//新建一辅助栈,使得辅助栈从上到下存储的应该是最小值->次小值->次次小值……
class Solution {
public:
stack<int> dataStack, minStack;
void push(int val) {
//将元素压入储存数据的栈
dataStack.push(val);
//当储存最小元素的栈没有元素的时候,将当前元素压入最小元素栈。否则,先比较大小,压入较小的元素入最小元素栈。
if (minStack.empty()) {
minStack.push(val);
}
else{
int min = minStack.top();
val<=min?minStack.push(val):minStack.push(min);
}
}
//pop的时候,数据栈辅助栈均弹出顶元素。
void pop() {
dataStack.pop();
minStack.pop();
}
int top() {
return dataStack.top();
}
int min() {
return minStack.top();
}
};