leetcode python刷题记录(十)(91~100)

news2025/1/20 3:47:41

leetcode python刷题记录(十)(91~100)

91. 解码方法

在这里插入图片描述

class Solution:
    def numDecodings(self, s: str) -> int:
        if not s or s[0]=='0':
            return 0

        n=len(s)
        dp=[0]*(n+1)
        dp[0]=1
        dp[1]=1

        for i in range(1,n):
            if s[i]=='0':
                if s[i-1]=='1' or s[i-1]=='2':
                    dp[i+1]=dp[i-1]
                else:
                    return 0
            else:
                if s[i-1]=='1' or (s[i-1]=='2' and '1'<=s[i]<='6'): # 可以自己单独解码也可以和上一位组合解码,所以s[i+1]=s[i]+s[i-1]
                    dp[i+1]=dp[i]+dp[i-1]
                else:
                    dp[i+1]=dp[i]

        return dp[n]

92. 反转链表 II

在这里插入图片描述

class Solution:
    def reverseBetween(self, head: Optional[ListNode], left: int, right: int) -> Optional[ListNode]:
        dummy=ListNode(0)
        dummy.next=head
        pre=dummy
        for i in range(left-1):
            pre=pre.next

        cur=pre.next

        # 头插法
        for i in range(right-left):
            temp1=cur.next
            temp2=temp1.next

            cur.next=temp2
            temp1.next=pre.next
            pre.next=temp1

        return dummy.next

93. 复原 IP 地址

在这里插入图片描述

class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        res=[]

        def dfs(start,temp):
            if len(temp)>4:
                return 
            if start==len(s) and len(temp)==4:
                return res.append('.'.join(temp))

            for i in range(start,len(s)):
                if int(s[start:i+1])>255 or (s[start]=='0' and len(s[start:i+1])>=2):# 取出来的大于255,或者不是单个0,那么不满足要求
                    return
                temp.append(s[start:i+1])
                dfs(i+1,temp)
                temp.pop()

        dfs(0,[])

        return res

94. 二叉树的中序遍历

在这里插入图片描述

class Solution:
    def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return []
        res,stack=[],[]

        while root or stack:
            # 先遍历左子树
            while root:
                stack.append(root)
                root=root.left
            # 到头了,返回上一级
            root=stack.pop()
            res.append(root.val)
            # 遍历右子树
            root=root.right

        return res

95. 不同的二叉搜索树 II

在这里插入图片描述
读于一棵二叉搜索树来说,一个重要的性质就是它的中序遍历为升序,中序遍历的过程为左 -> 根 -> 右,如果给每个结点标记上编号,意思就是说所有左子树节点的编号一定小于根节点,所有右子树的结点编号大于根节点。在此题中给定了一个中序遍历顺序1 ~ n, 于是我们的思路如下:

  • 先枚举根节点的位置,将问题划分为分别递归求解左边子树和右边子树
  • 递归返回的是所有合法方案的集合,所以枚举每种合法的左右儿子
  • 枚举左右儿子和根节点作为一种合法方案记录下来
class Solution:
    def generateTrees(self, n: int) -> List[Optional[TreeNode]]:

        def dfs(l,r):
            if l>r:
                return [None]
            
            res=[]

            for i in range(l,r+1):
                left=dfs(l,i-1)
                right=dfs(i+1,r)

                for l_child in left:
                    for r_child in right:
                        root=TreeNode(i)
                        root.left=l_child
                        root.right=r_child
                        res.append(root)

            return res
        
        return dfs(1,n)

96. 不同的二叉搜索树

在这里插入图片描述
在这里插入图片描述

class Solution:
    def numTrees(self, n: int) -> int:
        dp=[0]*(n+1)
        dp[0]=1

        for m in range(1,n+1): # 枚举长度
            for i in range(1,m+1): # 枚举root节点的位置
                dp[m]=dp[m]+dp[i-1]*dp[m-i] # dp[m]=左子树*右子树

        return dp[n]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/434741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法系列之二叉树I】leetcode226.翻转二叉树

非递归实现前序遍历 力扣题目链接 解决思路 前序遍历&#xff0c;中左右。先放右节点&#xff0c;后放左节点。 Java实现 class Solution {public List<Integer> preorderTraversal(TreeNode root) {//中左右Stack<TreeNode> stack new Stack<>();List…

蓝桥杯:人物相关性分析

蓝桥杯&#xff1a;人物相关性分析https://www.lanqiao.cn/problems/198/learning/ 目录 题目描述 输入描述 输出描述 输入输出样例 输入 输出 输入 输出 运行限制 题目分析:(滑动窗口) AC代码&#xff08;JAVA&#xff09; 题目描述 小明正在分析一本小说中…

【ChatGPT】无需魔法打开即用的 AI 工具集锦

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

原理+配置+实战,Canal一套带走

前几天在网上冲浪的时候发现了一个比较成熟的开源中间件——Canal。在了解了它的工作原理和使用场景后&#xff0c;顿时产生了浓厚的兴趣。今天&#xff0c;就让我们跟随阿Q的脚步&#xff0c;一起来揭开它神秘的面纱吧。 简介 canal 翻译为管道&#xff0c;主要用途是基于 M…

【设计】【Redis】分布式限流与算法实现

目录 前言实现application.propertiesconfig.RedisConfigMainApplicationcontroller.TrafficLimitControlleraop.AccessLimiterAspectaop.annotation.AccessLimiter 项目结构运行限流脚本计数器滑动窗口令牌桶漏桶 参考资料 前言 服务的某些场景可能会出现短时间内的巨大访问流…

【C语言进阶:动态内存管理】柔性数组

本节重点内容&#xff1a; 柔性数组的特点柔性数组的使用柔性数组的优势 ⚡柔性数组 也许你从来没有听说过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但是它确实是存在的。C99 中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c…

java+ssm 社区超市网上商城果蔬(水果蔬菜)管理系统

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括超市果蔬管理系统的网络应用&#xff0c;在外国超市果蔬管理系统已经是很普遍的方式&#xff0c;不过国内的超市果蔬管理系统可能还处于起步阶段。超市果蔬管理系统具有果蔬管…

Flutter系列(八)搜索框详解

底部导航顶部导航图片列表的完整代码 Flutter系列&#xff08;四&#xff09;底部导航顶部导航图文列表完整代码_摸金青年v的博客-CSDN博客 目录 一、前言 二、搜索框实现方案 三、完整工程代码 1. 自定义的搜索框组件SearchAppBar search.dart 2. 搜索详情页 search…

Java岗五面阿里,终拿offer,原来面试官总喜欢问这些问题

一面 一面就做了一道算法题&#xff0c;要求两小时内完成&#xff0c;给了长度为N的有重复元素的数组&#xff0c;要求输出第10大的数。典型的TopK问题&#xff0c;快排算法搞定。 算法题要注意的是合法性校验、边界条件以及异常的处理。另外&#xff0c;如果要写测试用例&am…

v1.5宝可梦综合耐久最大化计算器

版本更新v1.5 链接&#xff1a;https://pan.baidu.com/s/1JseHNYnAqIuSpg5f3k6Hbw?pwd01gy 提取码&#xff1a;01gy 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 更新说明 1.增加了特性威吓、灾祸之鼎、灾祸之简 使用说明 1.种族值&#xff1a;查百科获取…

Jmeter5.1.1报错:java.net.BindException: Address already in use: connect

Jmeter5.1.1报错&#xff1a;java.net.BindException: Address already in use: connect 原因&#xff1a;从网上找到资料&#xff1a;端口占用 Windows提供给TCP/IP链接的端口为 1024-5000&#xff0c;并且要四分钟来循环回收它们&#xff0c;就导致我们在短时间内跑大量的请…

【数据库】学习数据库该了解的基本知识

前言 在学习数据库之前&#xff0c;我们先要明确&#xff0c;sql是编程语言&#xff1b;Oracle&#xff0c;Mysql&#xff0c;SQL Server这些是数据库软件&#xff0c;sql这个语言是运行在数据库软件上的&#xff08;就像Java运行在jvm上一样&#xff09; 1、常见的关系型数据库…

HAProxy的安装、详细配置与实际应用(MyCAT、RabbitMQ示例)

HAProxy的安装、配置与实际应用 HAProxyHAProxy概述下载编译安装配置启动验证配置RabbitMQ的HAProxy示例 HAProxy HAProxy概述 HAProxy&#xff08;High Availability Proxy&#xff09;是一款自由、快速、可靠的TCP/HTTP负载均衡软件&#xff0c;其最常见的用途是将客户端请求…

使用signapk工具给apk系统签名

使用signapk给apk系统签名&#xff1a; 1、准备signapk.jar文件 查找路径&#xff1a; .\out\host\linux-x86\framework\signapk.jar 2、platform.x509.pem 和 platform.pk8 查找路径&#xff1a; .\vendor\prima\customer\certificatekey\prima 3、重点&#xff1a;将sdk…

Mac的PATH环境变量及相关文件加载顺序详细解释

系统级变量 /etc/profile /etc/paths 用户级变量(前3个按照从前往后的顺序读取&#xff0c;如果~/.bash_profile文件存在&#xff0c;则后面的几个文件就会被忽略不读了&#xff0c;如果~/.bash_profile文件不存在&#xff0c;才会以此类推读取后面的文件。~/.bashrc没有上述…

数据结构 | 排序 - 总结

排序的方式 排序的稳定性 什么是排序的稳定性&#xff1f; 不改变相同数据的相对顺序 排序的稳定性有什么意义&#xff1f; 假定一个场景&#xff1a; 一组成绩&#xff1a;100&#xff0c;88&#xff0c;98&#xff0c;98&#xff0c;78&#xff0c;100&#xff08;按交卷顺序…

【数据结构】队列(循环队列和链队列)详细讲解各种操作

&#x1f38a;专栏【数据结构】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【勋章】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 图片来源网络&#xff0c;如果侵权&#xff0c;请联系我 目录 ⭐队…

爱智EdgerOS之深入解析离线下载任务

一、需求分析 在日常使用计算机的过程中&#xff0c;看到喜欢的资源不可避免地想把它下载到我们的设备上保存下来&#xff0c;比如图片&#xff0c;音视频资源&#xff0c;文档资源等&#xff0c;基于这种应用场景&#xff0c;现在来看看在爱智设备上可以如何实现呢&#xff1…

日撸 Java 三百行day33

文章目录 说明day33 图的广度优先遍历1.思路2.多个连通分量2 代码实现 说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护&#xff1a;https://github.com/fulisha-ok/sampled…

82.qt qml-2D粒子系统、粒子方向、粒子项(一)

由于粒子系统相关的类比较多, 所以本章参考自QmlBook in chinese的粒子章节配合学习: 由于QmlBook in chinese翻译过来的文字有些比较难理解,所以本章在它的基础上做些个人理解,建议学习的小伙伴最好配合QmlBook in chinese一起学习。 1.介绍 粒子模拟的核心是粒子系统(Partic…