题目链接:
https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/
题意:
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)
题解:
栈用python 里的list代替,出栈用pop(-1),进栈用append(x)
自定义的栈里再用另一个list来维护栈中最小值,其中mistack[i]表示栈中前i个元素中最小的元素值
代码:
class MinStack:
def __init__(self):
self.stack = []
self.mistack = []
def push(self, x: int) -> None:
if len(self.mistack)>0:
self.mistack.append(x if self.mistack[len(self.mistack)-1]>x else self.mistack[len(self.mistack)-1])
else :
self.mistack.append(x)
self.stack.append(x)
def pop(self) -> None:
if len(self.stack)>0:
self.stack.pop(-1)
self.mistack.pop(-1)
def top(self) -> int:
return self.stack[len(self.stack)-1]
def min(self) -> int:
return self.mistack[len(self.mistack)-1]