题目分析:定义一个类,有一些栈的操作,主要是要得到栈里面的最小值,我们直接用一个变量来保存目前栈里面的最小值就行。这里我们进出栈都需要比较栈顶元素和最小值的大小,以便实时更新栈中最小的值。
C++:
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
if(x <= min){
s.push(min);
min = x;
}
s.push(x);
}
void pop() {
if(s.top() == min){
s.pop();
min = s.top();
}
s.pop();
}
int top() {
if(!s.empty())
return s.top();
return NULL;
}
int getMin() {
return min;
}
private:
stack<int> s;
int min = INT_MAX;
};
Python:
class MinStack:
def __init__(self):
self.s = []
self.min = sys.maxsize
def push(self, x:int) -> None:
if x <= self.min:
self.s.append(self.min)
self.min = x
self.s.append(x)
def pop(self) -> None:
if self.s[-1] == self.min:
self.s.pop()
self.min = self.s[-1]
return self.s.pop()
def top(self) -> int:
return self.s[-1]
def getMin(self) -> int:
return self.min