力扣算题Day20

news2024/11/23 13:46:44

98.验证二叉搜索树(了解二叉树的性质,才是编写此道题代码的基础)

        做题伤着了:这道题我做的时候,看到别人写的代码很长,懒得看,直接干。自己编写代码,没有了解平衡二叉树的性质,然后出现了下图[0,-1]、[0]的错误。我继续头铁,消灭这些错误。当我看到第三个错误的时候,我知道我错了,方向错了,改的思路都没了。

         错误代码:

class Solution:
    def isValidBST(self, root):
        if root and not root.left and not root.right :
           return True

        if   root.right:
            if not root.left  and root.right.val<=root.val:
            # if root.right.val<=root.val:
                return False
        if root.left:
            if  not root.right and root.left.val >= root.val:
                return False

        def trval(root):
            if not root.left :
                return

            # while root.left.val:
                print(root.val)
                print(root.left.val)
            if root.left.val >=root.val:
                return False
            if not root.right:
                return
            if root.right.val <=  root.val:
                return False

            trval(root.left)
            trval(root.right)

        if trval(root)==False :
            return False
        else:
            return True

        掌握规律后,秒解决:

         掌握上述规律,直接手撕代码(中序遍历+循环——》解决战斗)-----》秒解决,不过出现了一个错误。

        代码如下:

class Solution:
    def isValidBST(self, root):
        ddd=[]
        def trval(root):
            if not root:
                return
            trval(root.left)
            ddd.append(root.val)
            trval(root.right)
        trval(root)
        d_length=len(ddd)
        print(ddd)
        for i in range(1,d_length):
            if ddd[i-1]>=ddd[i]:
                return False

        return True
        还有其他方法,时间不够,二刷再做。

 530.二叉搜索树的最小绝对差 

        会了上一道题,这道题直接秒了。

class Solution:
    def getMinimumDifference(self, root):
        ddd=[]
        def trval( root):
            if not root:
                return
            trval(root.left)
            ddd.append(root.val)
            trval(root.right)
        trval(root)
        d_length=len(ddd)
        print(ddd)
        tt=[]
        for i in range(1,d_length):
            tt.append(ddd[i]-ddd[i - 1])
        return min(tt)

        还有其他方法,时间不够,二刷再做。

 501.二叉搜索树中的众数 

        方法一(开了新的内存):   

class Solution:
    def findMode(self, root: Optional[TreeNode]) -> List[int]:

        ddd = []

        def trval(root):
            if not root:
                return
            trval(root.left)
            ddd.append(root.val)
            trval(root.right)

        trval(root)
        
        ########使用对数组处理的方法
        d = dict()

        for item in ddd:
            if item in d.keys():
                d[item] += 1
            else:
                d[item] = 1
        print(d)

        def find_key(dict_input):
            list_key = []
            dict_key=list(dict_input.keys())
            dict_value=list(dict_input.values())
            for i in range(len(dict_key)):
                if dict_value[i] == max(dict_value):
                    list_key.append(dict_key[i])
            return list_key

        list_key = find_key(d)
        return list_key

        方法二(双指针):

 

 

 运行代码: 

class Solution:
    def __init__(self):
        self.pre=TreeNode()
        self.count=0
        self.bijiao=0
        self.cuncu=[]
    def findMode(self, root: Optional[TreeNode]) -> List[int]:
        self.bianli(root)
        return self.cuncu
    def bianli(self,root):
        if not root:
            return
        self.bianli(root.left)
        cur=root
        if not self.pre:
            self.count=1
        elif self.pre.val==cur.val:
            self.count+=1
        else:
            self.count = 1
        if self.count>self.bijiao:
            self.cuncu=[cur.val]
            self.bijiao=self.count
        elif self.count==self.bijiao:
                self.cuncu.append(cur.val)
        self.pre=cur
        self.bianli(root.right)
class Solution:
    def __init__(self):
        self.pre=TreeNode()
        self.count=0
        self.bijiao=0
        self.cuncu=[]
    def findMode(self, root: Optional[TreeNode]) -> List[int]:
        if not root:
            return
        self.findMode(root.left)
        cur=root
        if not self.pre:
            self.count=1
        elif self.pre.val==cur.val:
            self.count+=1
        else:
            self.count = 1
        if self.count>self.bijiao:
            self.cuncu=[cur.val]
            self.bijiao=self.count
        elif self.count==self.bijiao:
                self.cuncu.append(cur.val)
        self.pre=cur
        self.findMode(root.right)
        return self.cuncu


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

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

相关文章

落地页设计的营销心理学(一)

营销落地页的作用&#xff0c;是为了促进目标用户转化。但如何提升转化率&#xff0c;这就需要我们了解用户在浏览落地页行为背后的动机、心理活动是什么&#xff0c;才能更好地制定营销策略。 营销心理学是指应用心理学原理来解释、预测和影响人们购买决策的一门学科。在落地页…

Goby 漏洞更新 |华视私云-CDN直播加速服务器默认口令漏洞

漏洞名称&#xff1a;华视私云-CDN直播加速服务器默认口令漏洞 English Name&#xff1a;Sinovision Cloud CDN live default passwd CVSS core: 6.5 影响资产数&#xff1a;737 漏洞描述&#xff1a; 华视私云-CDN直播加速服务器是一款用于CDN直播加速的服务器。华视私云…

Restormer Efficient Transformer for High-Resolution Image Restoration论文代码运行记录

文章目录 Restormer代码训练和测试运行记录文章及代码地址1. 所需环境2. 配置环境3. 安装gdrive以便下载数据集4. 放置权重文件5. 运行Demo运行单图像散焦去模糊训练、测试 Restormer代码训练和测试运行记录 文章及代码地址 文章名称&#xff1a;Restormer: Efficient Transf…

获取cookies的方法及使用postman进行接口关联

第一种获取cookies的方式 看有没有专门的登录测试地址&#xff0c;访问来获取cookie信息&#xff0c;然后将cookie信息粘贴到header里面 第二种获取cookies的方式 在登录前&#xff0c;提前打开审查元素&#xff0c;然后输入账号密码后&#xff0c;点击登录&#xff0c;就可…

刚来起薪就18K,公司刚来的00后真是卷王....

都说00后躺平了&#xff0c;但是有一说一&#xff0c;该卷的还是卷。 这不&#xff0c;前段时间我们公司来了个00后&#xff0c;工作都没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了…

【Java零基础入门篇】第 ⑤ 期 - 抽象类和接口(一)

博主&#xff1a;命运之光 专栏&#xff1a;JAVA入门 学习目标 1.了解什么是抽象类&#xff0c;什么是接口&#xff1b; 2.掌握抽象类和接口的定义方法&#xff1b; 3.理解接口和抽象类的使用场景&#xff1b; 4.掌握多态的含义和用法&#xff1b; 5.掌握内部类的定义方法和使用…

数字孪生应用 | 3D可视化技术助力智慧煤矿建设,提升煤矿生产效率

智慧煤矿数字孪生可视化平台是一种利用现代信息技术手段&#xff0c;对煤矿的生产过程进行实时监测、管理和控制的系统。它能够将煤矿内的数据、信息、图像等多种信息整合在一起&#xff0c;通过3D可视化的方式呈现给煤矿管理者和工作人员&#xff0c;帮助他们更好地了解煤矿的…

mysql读写分离实验

amoeba服务器 mkder amoeba tar xf amoba- mysql-binary-2. 2.0.tar.gz -C amoeba mv amoeba /usr/local 解压jdk mv jdk1.6 /usr/local/jdk1.6 vim /etc/profile export JAVA_home/usr/local/jdk1.6 export CLASSPATH.:$JAVA_HOME/lib:$JAVE_HOME/jre/lib export AM…

SpringBoot+myBatis(plus)+MySQL+VUE最基础简易的前后端全栈demo制作

网站全栈制作&#xff1a; 一&#xff1a;后端 为了跟公司后端更好的扯皮&#xff08;不是&#xff09;&#xff0c;本人决定学一下java语言的后端接口书写。 项目制作&#xff1a;后端采用SpringBootmyBatis(plus)mysql&#xff08;IDE为IDEA软件&#xff09;。前端采用Vue…

奶爸式Swagger教学

目录 一、导入依赖 二、SwaggerConfig基础编程 三、Swagger 常用说明注解 1.API 2.ApiOperation 3.ApiModel 4.ApiModelProperty 5.ApiParam 6.ApilmplicitParam 一、导入依赖 <!--开启Swagger --><!-- https://mvnrepository.com/artifact/io.springf…

自动化测试框架搭建步骤教程

说起自动化测试&#xff0c;我想大家都会有个疑问&#xff0c;要不要做自动化测试&#xff1f; 自动化测试给我们带来的收益是否会超出在建设时所投入的成本&#xff0c;这个嘛别说是我&#xff0c;即便是高手也很难回答&#xff0c;自动化测试的初衷是美好的&#xff0c;而测试…

实验1 流水线及流水线中的冲突【计算机系统结构】

实验1 流水线及流水线中的冲突【计算机系统结构】 前言推荐实验1 流水线及流水线中的冲突1 实验目的2 实验平台3 实验内容和步骤4 实验结论5 实验心得 最后 前言 2023-5-12 20:22:09 以下内容源自《【计算机系统结构】》 仅供学习交流使用 推荐 无 实验1 流水线及流水线中…

【国际知名-hacker`动态`】洞悉-最新 hacker技术 新闻

国际知名-黑客动态 1、【导读】黑客 最新 技术&新闻 平台 2、【动态】每日必看的朋友圈 3、【多看看】跳出舒适圈&#xff0c;你要学的还有很多 ​ The Hacker News 报道黑客攻击、网络安全、科技新闻&#xff08;内容深入浅出>提供及时、可靠的信息) 链接&#xff1a…

面板数据的门槛|门限效应检验、阈值确定、回归结果解释

写在前面 up学习是参照一个B站大美女&#xff1a;传送门 这里做笔记总结&#xff0c;勿cue 1.为什么是门槛模型 这玩意是针对非线性的举个例子 打LOL&#xff0c;最开始接触的时候&#xff0c;是新手训练营&#xff0c;你需要画大量的时间去学习如何行走、控制角色、熟悉英雄…

使用 Selenium IDE 上手 web 自动化测试

安装 Selenium IDE 是以浏览器插件的形式使用的&#xff0c;主要包含 FireFox 和 Chrome 两种。安装方式分为&#xff1a; 在线安装&#xff1a;下载对应的浏览器插件&#xff08;chrome)。本地安装&#xff1a;把 .zip 压缩包拖到浏览器的扩展页面。 开始页面 在浏览器的插…

patchelf 和 glibc-all-in-one

小白垃圾笔记。不建议阅读。 为什么突然学这个呢&#xff1f; 因为因为因为一个栈溢出题&#xff0c;把我的ubuntu16搞崩了。具体是什么原因呢。 我很菜&#xff0c;我不知道pip是干啥的&#xff0c;之前装pwntools都是直接粘贴命令。然而这次&#xff0c;ubuntu16的python其…

冠珠瓷砖打造民族文化品牌,让中国陶成为中国潮

随着国家经济实力、综合国力的大幅度提升&#xff0c;文化自信被强势唤醒&#xff0c;“国潮”之风蔚然复兴。“讲好中国故事、传递中国文化”&#xff0c;成为民族品牌共同的愿景。冠珠瓷砖在建立之初就立足于民族品牌的打造&#xff0c;致力于“砖筑中国瓷砖硬实力”&#xf…

RFID技术在家具行业的应用

RFID技术在家具行业的应用 科技的不断进步和发展&#xff0c;RFID技术在各个领域的应用也越来越广泛&#xff0c;其中家具行业也不例外。RFID技术可以帮助家具企业实现实时追踪、管理和监控家具的生产、物流、库存以及售后服务等全流程&#xff0c;提高家具企业的生产效率和管…

算法修炼之练气篇——练气九层

博主&#xff1a;命运之光 专栏&#xff1a;算法修炼之练气篇 前言&#xff1a;每天练习五道题&#xff0c;炼气篇大概会练习200道题左右&#xff0c;题目有C语言网上的题&#xff0c;也有洛谷上面的题&#xff0c;题目简单适合新手入门。&#xff08;代码都是命运之光自己写的…

hexo + github 创建个人博客网站

环境准备 nodejs 和 npmgit 安装hexo hexo 是一个静态博客生成网站&#xff0c;可以快速制作自己的博客网站并部署 安装hexo npm install hexo-cli -g 创建项目 hexo init 本地预览 hexo s 部署到github page 新建仓库 创建一个名为[用户名].github.io的仓库 下载自动部署插…