版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24502469/article/details/88535374
# 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。
#
# push(x) -- 将元素 x 推入栈中。
# pop() -- 删除栈顶的元素。
# top() -- 获取栈顶元素。
# getMin() -- 检索栈中的最小元素。
#
# 示例:
# MinStack minStack = new MinStack();
# minStack.push(-2);
# minStack.push(0);
# minStack.push(-3);
# minStack.getMin(); --> 返回 -3.
# minStack.pop();
# minStack.top(); --> 返回 0.
# minStack.getMin(); --> 返回 -2.
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.nums = []
self.index_top = -1
def push(self, x):
self.index_top += 1
self.nums.append(x)
def pop(self):
if self.index_top >= 0:
self.nums.pop(self.index_top)
self.index_top -= 1
def top(self):
if self.index_top >= 0:
return self.nums[self.index_top]
def getMin(self):
if self.index_top >= 0:
index_min = 0
for i in range(self.index_top+1):
if self.nums[i] < self.nums[index_min]:
index_min = i
return self.nums[index_min]