题解 | 包含min函数的栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.s1=[] self.s2=[] def push(self, node): self.s1.append(node) if len(self.s2)==0 or self.s2[-1]>=node: self.s2.append(node) else: self.s2.append(self.s2[-1]) def pop(self): self.s1.pop() self.s2.pop() def top(self): return self.s1[-1] def min(self): return self.s2[-1]
这里我们用S1作为主栈,S2作为辅助栈,用来存储最小值。进栈时,S1直接进。进S2时,要看node和S2[-1]的大小。如果node>S2【-1】那么还是进S2[-1],否则把node进栈到S2.