剑指offer-python刷题-包含min函数的栈
发布日期:2021-07-28 12:03:09 浏览次数:3 分类:技术文章

本文共 1314 字,大约阅读时间需要 4 分钟。

题目


:先入后出

刚拿到这道题感觉和之前一道类似

因此这个题实现起来,尤其是在求最小值时,使用python内置函数简直暴力

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.stack = []    def push(self, node):        # write code here        self.stack.append(node)    def pop(self):        # write code here        self.stack.pop()    def top(self):        # write code here        if self.stack:            return self.stack[-1]    def min(self):        # write code here        return min(self.stack)

运行成功后,看讨论区遇到了一个比较高级一点的解法:利用一个辅助的栈将每次入栈、出栈操作后的当前站内的最小值保留下来。

# -*- coding:utf-8 -*-class Solution:    def __init__(self):        self.stack = []        #用于存储栈中当时的最小值        self.stack_min = []    def push(self, node):        # write code here        self.stack.append(node)        #有新元素入栈stack时,需要将此时最下的元素入栈到stack_min        if not self.stack_min:            self.stack_min.append(node)        elif node < self.stack_min[-1]:            self.stack_min.append(node)        else:            self.stack_min.append(self.stack_min[-1])    def pop(self):        # write code here        self.stack.pop()        #将对应的最小值出栈        self.stack_min.pop()    def top(self):        # write code here        if self.stack:            return self.stack[-1]    def min(self):        # write code here        #只需要将stack_min中最后一个元素出栈即可        return self.stack_min[-1]

 

转载地址:https://blog.csdn.net/sinat_42437278/article/details/117386819 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指offer-python刷题-数组中出现次数超过一般的数字
下一篇:剑指offer-python刷题-二叉树的镜像

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月12日 10时48分25秒