题解 | #包含min函数的栈#
包含min函数的栈
http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
对于这道题,我另外声明了一个list做栈(minstack)来一对一记录每个位置的最小值。
解题思路很简单,这里不再赘述。但有一点要注意:这种写法要考虑到当进行pop操作时还要改变self.minv值;否则当进行[PSH122,PSH123,POP,MIN]这类操作时会出错。
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack=[] self.minstack=[] self.minv=float("inf") def push(self, node): if node<self.minv: self.minv=node self.stack.append(node) self.minstack.append(self.minv) else: self.stack.append(node) self.minstack.append(self.minv) # write code here def pop(self): self.stack.pop() self.minstack.pop() self.minv=self.minstack[-1] # write code here def top(self): value=self.stack[-1] min_value=self.minstack[-1] return value # write code here def min(self): min_value=self.minstack[-1] return min_value # write code here