剑指offer包含min函数的栈python
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
思路
定义两个栈,一个保存正常的数据,另一个用来记录当前的最小元素
代码
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] self.cur = -1 def push(self, node): # write code here if self.cur == -1:#第一个 self.stack1.append(node) self.stack2.append(node) self.cur+=1 else: self.stack1.append(node) if self.stack2[-1] <= node: self.stack2.append(self.stack2[-1]) else: self.stack2.append(node) self.cur+=1 def pop(self): # write code here self.cur -= 1 self.stack2.pop() return self.stack1.pop() def top(self): # write code here return self.stack1[-1] def min(self): # write code here return self.stack2[-1]