这题很让人疑惑啊,要时间复杂度为1,说明不能用遍历,如果只有一个变量保存的话,那么如果pop出去以后,不知道第二个小的是什么,所以用另一个stack去入栈。
e.g.2,3,1,4
a[2,3,1,4]
min_a[2,2,1,1]
保持a和min_a长度一致,就可以一起入栈,一起出栈
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.a=[]
self.min_a=[]
def push(self, node):
# write code here
self.a.append(node)
if not self.min_a or node<=self.min_a[-1]:
self.min_a.append(node)
else:
self.min_a.append(self.min_a[-1])
def pop(self):
# write code here
if not self.a:
self.a.pop()
self.min_a.pop()
def top(self):
# write code here
return self.a[-1]
def min(self):
# write code here
return self.min_a[-1]