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()

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

相关推荐
于先生吖7 分钟前
Java框架开发短剧漫剧系统:后台管理与接口开发
java·开发语言
智者知已应修善业13 分钟前
【51单片机独立按键控制数码管移动反向,2片74CH573/74CH273段和位,按键按下保持原状态】2023-3-25
经验分享·笔记·单片机·嵌入式硬件·算法·51单片机
khddvbe23 分钟前
C++并发编程中的死锁避免
开发语言·c++·算法
C羊驼24 分钟前
C语言:两天打鱼,三天晒网
c语言·经验分享·笔记·算法·青少年编程
菜菜小狗的学习笔记1 小时前
剑指Offer算法题(四)链表
数据结构·算法·链表
myloveasuka1 小时前
[Java]查找算法&排序算法
java·算法·排序算法
清水白石0081 小时前
Free-Threaded Python 实战指南:机遇、风险与 PoC 验证方案
java·python·算法
We་ct1 小时前
LeetCode 148. 排序链表:归并排序详解
前端·数据结构·算法·leetcode·链表·typescript·排序算法
wWYy.1 小时前
STL:list
开发语言·c++
TON_G-T1 小时前
day.js和 Moment.js
开发语言·javascript·ecmascript