剑指offer:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路,用一个minStac堆栈存储最小值,与dataStack堆栈同时存储
其实也可以自己用数组和单向链表实现堆栈。这里采用stack,快一点
代码如下:
class Solution {
public:
stack<int> dataStack,minStack;
void push(int value) {
dataStack.push(value);
if(minStack.empty())
minStack.push(value);
else{
int min = minStack.top();
if(min <= value)
minStack.push(min);
else
minStack.push(value);
}
}
void pop() {
dataStack.pop();
minStack.pop();
}
int top() {
return dataStack.top();
}
int min() {
return minStack.top();
}
};