leetcode:包含min函数的栈
原题以及解法:https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/solution/offer30bao-han-minhan-shu-de-zhan-by-log-a6vx/
class MinStack(object):
def __init__(self):
"""
initialize your data structure here.
"""
self.stack=[]
self.minlist=[]
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.stack.append(x)
if(len(self.minlist)==0):
self.minlist.append(x)
return
key = x
j = len(self.minlist)-1
self.minlist.append(0)
while j >= 0 and key > self.minlist[j]:
self.minlist[j + 1] = self.minlist[j]
j -= 1
self.minlist[j + 1] = key
def pop(self):
"""
:rtype: None
"""
if len(self.stack) == 0:
return -1
tmp=self.stack[len(self.stack)-1]
del self.stack[len(self.stack)-1]
self.minlist.remove(tmp)
return tmp
def top(self):
"""
:rtype: int
"""
if len(self.stack) == 0:
return -1
tmp=self.stack[len(self.stack)-1]
return tmp
def min(self):
"""
:rtype: int
"""
if len(self.minlist) !=0:
return self.minlist[len(self.minlist)-1]
return -1

浙公网安备 33010602011771号