用一个assist列表储存最小值,用stack列表存储正常值。
每次push时和assist中最小值作比较,如果比最小值还小,assist和stack同时存储该值,否则只有stack存储该值。
每次pop时判断该值是否为最小值,如果是则需要把assist中的值也pop出来。
每次top只需返回stack中的最后一个值。
每次min时只需返回assist中最后一个值。
class Solution: def __init__(self): self.stack = [] self.assist = [] def push(self, node): min = self.min() if not min or (min >= node): self.assist.append(node) self.stack.append(node) else: self.stack.append(node) # write code here def pop(self): if self.stack: if self.assist[-1] == self.stack[-1]: self.assist.pop() self.stack.pop() else: self.stack.pop() # write code here def top(self): if self.stack: return self.stack[-1] # write code here def min(self): if self.assist: return self.assist[-1] # write code here
```