0x3f 第43天 黑马点评全量复习一遍 + 栈两题

1.最小栈:

解法:栈里存的都是二元组( x,y)x是当前存入栈的元素,y是当前栈最小元素,这样既可以O(1)弹出当前元素,也可以O(1)弹出栈内最小元素

复制代码
class MinStack:

    def __init__(self):
        self.st = [(0,inf)]

    def push(self,val:int)->None:
        self.st.append((val,min(val,self.st[-1][1])))
    
    def pop(self):
        self.st.pop()

    def top(self)->int:
        return self.st[-1][0]
    
    def getMin(self)->int:
        return self.st[-1][1]

2.字符串解码

核心思路:遇到 就进入递归,遇到就break结束这层递归,递归前遇到数字记录下来k,技巧k = k*10+int(c)

复制代码
class Solution:
    def decodeString(self, s: str) -> str:
        i = 0
        def decode():
            nonlocal i
            res = []
            k = 0
            while i<len(s):
                c = s[i]
                i += 1
                if c.isalpha():
                    res.append(c)
                elif c.isdigit():
                    k = k*10+int(c)
                elif c=='[':
                    res.append(decode()*k)
                    k = 0
                else:
                    break
            return ''.join(res)
        return decode()

黑马点评从头看了一遍笔记,回顾了一下,准备开始新阶段了兄弟们

相关推荐
Java陈序员7 分钟前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
2601_9620973615 分钟前
1. 使用 C 或 C++ 扩展 Python
python·api·c·引用计数·扩展模块
尾善爱看海17 分钟前
前端算法与手写题集
前端·算法
Yanjun2i29 分钟前
Agent学习记录五:Pydantic验证
人工智能·python·学习
繁星蓝雨41 分钟前
C++的设计与演进大纲(如何从C语言一步步成长为C++)
c语言·开发语言·c++·c++历史·c++演进
程序员阿鹏1 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
Evand J1 小时前
【MATLAB例程,图像降噪滤波9】自适应维纳滑动窗口滤波(Wiener)图像降噪、方法对比,有中文注释
开发语言·图像处理·计算机视觉·matlab·滑动窗口·滤波·降噪
AI 思录1 小时前
Prompt 事故档案(八):日常表达被标为“待校准”,AI 的爹味语法从哪里来
大数据·人工智能·算法·prompt·用户体验·ai合规
月光船幽幽1 小时前
跨范式映射的稳定接口设计
人工智能·python·算法
杜大哥1 小时前
python程序:如何查看电脑【电池电量的剩余百分比】 和 【是否插入连接着充电器】?
开发语言·python