class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = [] #栈
self.minIdx = -1 #最小元素下标
def push(self, x: int) -> None:
self.stack.append(x)
if self.minIdx == -1:
self.minIdx = 0
elif x < self.stack[self.minIdx]: #更新最小下标
self.minIdx = len(self.stack) - 1
def pop(self) -> None:
if len(self.stack) == 1:
self.minIdx = -1
#若弹出元素是最小元素,则需更新最小下标
elif len(self.stack)-1 == self.minIdx:
self.minIdx = self.stack.index(min(self.stack[:-1]))
self.stack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.stack[self.minIdx]
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = [] #栈
self.idxStack = [] #最小元素下标栈
def push(self, x: int) -> None:
self.stack.append(x)
if len(self.stack) == 1:
self.idxStack.append(0)
else:
if x < self.stack[self.idxStack[-1]]:
self.idxStack.append(len(self.stack)-1)
else:
self.idxStack.append(self.idxStack[-1])
def pop(self) -> None:
self.stack.pop()
self.idxStack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.stack[self.idxStack[-1]]