记录一个误区:数据结构学的多之后,老是懒得思考,想直接用高级的数据结构解决问题,反而把问题想复杂了。这道题要求最小值,一开始想直接再维护一个优先队列[堆],每次都能取出最小值。但是维护堆的成本反而增加了。[logn]
class MinStack:
def __init__(self):
"""
initialize your data structure here.
"""
self.A = []
self.B = []
def push(self, x: int) -> None:
self.A.append(x)
if not self.B or self.B[-1] >= x:
self.B.append(x)
def pop(self) -> None:
if self.A.pop() == self.B[-1]:
self.B.pop()
def top(self) -> int:
return self.A[-1]
def min(self) -> int:
return self.B[-1]