定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。
(时间复杂度应为O(1))。
解题思路
思路非常简单
data为主栈,mindata为辅助栈
当要入栈的元素小于等于当前最小值,也要进行mindata的入栈操作
pop时,要出栈的元素是当前栈中的最小值,data和mindata栈都要进行出栈
class Solution:
def __init__(self):
self.data = []
self.mindata = []
def push(self, node):
# write code here
self.data.append(node)
if self.mindata ==[] or node<=self.mindata[-1]:
self.mindata.append(node)
def pop(self):
# write code here
if self.data[-1]==self.mindata[-1]:
self.mindata.pop()
self.data.pop()
def top(self):
# write code here
return data[-1]
def min(self):
# write code here
return self.mindata[-1] if self.mindata!=[] else None