剑指offer-包含min函数的栈(python)

这题很让人疑惑啊,要时间复杂度为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]
发布了69 篇原创文章 · 获赞 46 · 访问量 5270

猜你喜欢

转载自blog.csdn.net/qq_42738654/article/details/104236584