当前位置: 首页 > news >正文

《代码随想录》Day21打卡!

写在前面:祝大家新年快乐!!!2025年快乐,2024年拜拜~~~

《代码随想录》二叉树:修剪二叉搜索树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.本题使用递归进行求解,所以分为三部曲: 2.第一步:确定递归函数的参数和返回值:参数是二叉树的节点和要删除节点的范围。所以使用主方法作为递归函数。 3.第二步:确定递归的终止条件:当当前节点为空时,返回null 3.第三步:确定单次递归函数的逻辑:当当前节点的值小于下限时,说明当前节点的左子树都不满足要求,所以递归处理当前节点的右子树即可。当当前节点的值大于上限时,说明只有当前节点的右子树都不满足要求,左子树才可能会有要保留的节点,那么此时递归当前节点的左子树即可。最后一种情况就是当前节点满足给出的范围,那么此时该节点需要被保留,不对当前节点进行任何处理,所以递归当前节点的左子树并赋值给当前节点的左节点,再递归当前节点的右子树,并赋值给当前节点的右节点。 4.本题的难点是,当有一个子树都不满足要求时,则直接处理该节点的另一个子树即可。当当前节点满足要求时,不需要对当前节点进行处理,递归处理当前节点的左子树和右子树。 本题的完整代码如下:

//669. 修剪二叉搜索树
class Solution37 {public TreeNode trimBST(TreeNode root, int low, int high) {if(root == null){return null;}if(root.val < low){return trimBST(root.right, low, high);}else if(root.val > high){return trimBST(root.left, low, high);}else{root.left = trimBST(root.left, low, high);root.right = trimBST(root.right, low, high);return root;}}
}

《代码随想录》二叉树:将有序数组转换为二叉搜索树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.本题是将有序数组转换为二叉搜索树,所以数组中间的元素就是根节点的值,将数组将中间元素分开,分为左右两个部分,左边的就是左子树的部分,右边的是右子树的部分。所以也是使用递归来做: 2.第一步:确定递归函数的参数和返回值:参数是原数组以及左边界和右边界,返回值是二叉树的根节点。 3.第二步:确定递归函数的终止条件:当左边界大于等于右边界时,终止。 3.第三步:确定单次递归函数的逻辑:首先取出当前边界范围内数组的中间的索引值mid。将该索引值对应的元素作为值创建一个节点,该节点的左子树为递归结果,其中递归函数的参数为:left=left,right=mid-1。该节点的右子树为递归结果,其中递归参数是:left=mid+1,right=right。最后返回当前节点。 4.本题也较为难,需要使用IDEA debug一下该方法的递归过程,很难想到最后是如何构建该二叉搜索树的。 本题的完整代码如下:

//108.将有序数组转换为二叉搜索树
class Solution38 {public TreeNode sortedArrayToBST(int[] nums) {return sorted(nums, 0, nums.length - 1);}public TreeNode sorted(int[] nums, int left, int right) {if(left > right){return null;}int mid = left + (right - left) / 2;TreeNode root = new TreeNode(nums[mid]);root.left = sorted(nums, left, mid -1);root.right = sorted(nums, mid + 1, right);return root;
​}
}

《代码随想录》二叉树:把二叉搜索树转换为累加树

本题的完整题目如下:

image.png

本题的完整思路如下: 1.首先,本题也是使用递归进行求解。 2.第一步:确定递归函数的参数和返回值:参数是二叉树节点,返回值二叉累加树的根节点,定义一个全局变量,记录累计值,所以使用主方法作为递归函数即可。 2.第二步:确定递归函数的终止条件:当当前节点为空时,返回。 3.第三步:确定单次递归函数中的逻辑:因为是二叉搜索树,右子树的左右节点都比左子树大,所以先处理右子树。所以递归当前节点的右子树,接着将当前节点的值累加到全局变量中。并将该值赋值给当前节点的值。接着,递归处理左子树即可。最后返回节点。 4.本题重点是,先处理右子树,并记录累加和,接着赋值,再处理左子树。思路简单,但是处理起来还是很难想到递归的过程。 本题的完整代码如下:

//538.把二叉搜索树转换为累加树
class Solution39 {
    int sum = 0;
    public TreeNode convertBST(TreeNode root) {
        if(root == null){
            return root;
        }
        convertBST(root.right);
        sum += root.val;
        root.val = sum;
        convertBST(root.left);
        return root;
    }
}

相关文章:

《代码随想录》Day21打卡!

写在前面&#xff1a;祝大家新年快乐&#xff01;&#xff01;&#xff01;2025年快乐&#xff0c;2024年拜拜~~~ 《代码随想录》二叉树&#xff1a;修剪二叉搜索树 本题的完整题目如下&#xff1a; 本题的完整思路如下&#xff1a; 1.本题使用递归进行求解&#xff0c;所以分…...

Dell服务器升级ubuntu 22.04失败解决

ubuntu系统原版本20.04&#xff0c;服务器dell T40. 执行apt update后&#xff0c;再执行apt upgrade。 apt update执行成功&#xff0c;但apt upgrade执行中断&#xff0c;提示如下&#xff1a; Checking package manager Reading package lists... Done Building dependen…...

构建全志 T113 Tina SDK

1、环境配置&#xff1a; 准备一个 Ubuntu 系统&#xff0c;可以是 WSL&#xff0c;虚拟机等&#xff0c;建议版本是 20.04。 1.1、安装必要的软件 进入系统后&#xff0c;输入下方命令安装需要的工具 &#xff1a; sudo apt update -y sudo apt full-upgrade -y sudo apt i…...

(推荐)【通用业务分发架构】1.业务分发 2.rpc调用 3.Event事件系统

一.Reflections和SpringUtil完成扫描包的(反射缓存) 二.id与class的映射泛型上下文(玩家是否登录&#xff0c;rpc调用SeqId&#xff0c;class类名)反射调用 1.netty层的 AccountMsgParam // 登录前 OnlineMsgParam // 登录后 SceneMsgParam // 发到场景层的 2.跨进程rpc调用的…...

最近的一些事情

正义不会缺席 这家公司违法辞退不给工资乱开离职证明。严重影响个人发展。 今天终于收到法院的判决书。 警醒自身发展与社会之间密切交流&#xff0c;敲响警钟。 虽然最终得到的法院的支持&#xff0c;但过程举步维艰。 这其中的过程&#xff0c;也让我对律师、法院和中国…...

CP AUTOSAR标准之FlexRayDriver(AUTOSAR_SWS_FlexRayDriver)(更新中……)

1 简介和功能概述 FlexRay驱动程序(Fr)抽象了特定FlexRay通信控制器(CC)的硬件相关实现细节。本规范主要依赖于符合FlexRay规范[13]的FlexRay CC。此外,本规范还支持符合FlexRay规范[14]的旧版FlexRay控制器。本SWS中因支持的FlexRay规范不同而导致的不同行为在适用的情况下以…...

Cesium 实战 27 - 三维视频融合(视频投影)

Cesium 实战 27 - 三维视频融合(视频投影) 核心代码完整代码在线示例在 Cesium 中有几种展示视频的方式,比如墙体使用视频材质,还有地面多边形使用视频材质,都可以实现视频功能。 但是随着摄像头和无人机的流行,需要视频和场景深度融合,简单的实现方式则不能满足需求。…...

GraphRAG实践:docker部署neo4j

概述 随着图数据库&#xff08;Graph Database&#xff09;的流行&#xff0c;越来越多的应用场景开始采用图数据库来处理复杂的关系数据。Neo4j作为领先的图数据库之一&#xff0c;提供了强大的图形查询语言Cypher、高效的存储结构和丰富的生态系统&#xff0c;使得它成为开发…...

常用的数据库类型都有哪些

在Java开发和信息系统架构中&#xff0c;数据库扮演着存储和管理数据的关键角色。数据库种类繁多&#xff0c;各有特色&#xff0c;适用于不同的应用场景。 1. 关系型数据库&#xff08;RDBMS&#xff09;&#xff1a; • 关系型数据库是最为人熟知的数据库类型&#xff0c;数据…...

swiftui开发页面加载发送请求初始化@State变量

在SwiftUI中&#xff0c;你不能直接在init中更新State变量&#xff0c;因为State是由SwiftUI框架管理的&#xff0c;初始化时不允许直接修改。所以需要在onAppear发送请求然后修改State状态。 在SwiftUI中&#xff0c;如果希望在页面加载时立即发送网络请求&#xff0c;可以使…...

Ribbon和Eureka的集成

Ribbon和Eureka的集成是Spring Cloud Netflix生态系统的一部分&#xff0c;通常用于微服务架构中&#xff0c;以实现客户端负载均衡和服务发现。以下是更详细的集成步骤&#xff1a; 1. 引入依赖 在你的Spring Boot项目的pom.xml文件中添加Eureka客户端和Ribbon的依赖&#x…...

关于UE加载osgb数据的研究(一)

最近关于倾斜数据在UE中加载显示的问题,直接转换格式本地加载的方式避免了数据延迟加载、缓存加载,动态刷新等问题,但是也暴露了突出的问题:常规的模型格式会丢失掉倾斜数据的lod,致使效果缺失。 故而需要深入研究一下UE加载osgb数据的方式方法。 首先,我们需得学习一下…...

探索数据之美,Plotly引领可视化新风尚

在数据如潮的今天&#xff0c;如何精准捕捉信息的脉搏&#xff0c;让数据说话&#xff1f;Plotly&#xff0c;这款强大的数据可视化工具&#xff0c;正以其卓越的性能和丰富的功能&#xff0c;成为数据分析师、科学家及工程师们的得力助手。 Plotly不仅仅是一个绘图库&#xf…...

List排序的方法

List 排序方法&#xff1a; 1. list 的 sort() package com.example.a; import java.util.ArrayList; import java.util.Comparator; import java.util.List; class User{private Integer score;private Integer age;public User(Integer score, Integer age){super();this.…...

BurstAttention:高效的分布式注意力计算框架

BurstAttention&#xff1a;高效的分布式注意力计算框架 在现代大型语言模型&#xff08;LLMs&#xff09;的应用中&#xff0c;提升注意力机制的计算效率已成为研究的热点。当前&#xff0c;提升计算效率主要有两种方法&#xff1a;一种是优化单设备的计算和存储能力&#xf…...

大数据治理:构建稳健的数据生态系统

引言 随着信息技术的迅猛发展&#xff0c;企业每天都在生成海量的数据。这些数据不仅来自传统的业务交易系统&#xff0c;还包括社交媒体、物联网设备、移动应用程序等多个渠道。大数据治理旨在确保组织能够有效地管理其拥有的所有数据资产&#xff0c;以支持决策制定、优化业…...

【图书介绍】几本适合当教材的大数据技术图书

《Spark SQL大数据分析快速上手》 《Spark SQL大数据分析快速上手&#xff08;大数据技术丛书&#xff09;》(迟殿委&#xff0c;王泽慧&#xff0c;黄茵茵)【摘要 书评 试读】- 京东图书 《Spark SQL大数据分析快速上手》内容基于Spark新版本展开&#xff0c;符合企业目前开…...

阴阳师の新手如何速刷5个SP/SSR?!(急速育成)

目标&#xff1a;攒5个SP/SSR式神&#xff0c;参与急速育成&#xff0c;省四个黑蛋&#xff08;想要快速升级技能而且经常上场的式神在攒够5个式神前先不升级&#xff09;【理论上组成&#xff1a;10蓝40蓝预约召唤福利20修行or抽卡】 关键点&#xff1a;蓝票&#xff0c;新手…...

unity学习4:git和SVN的使用差别

目录 1 svn 1.1 操作逻辑 1.2 对应工具 1.3 SVN避免冲突的好习惯 2 git 2.1 git的基础操作逻辑 2.1.1 commit时&#xff0c;提交文件之外的其他文件需要pull 2.1.2 commit时&#xff0c;发现要提交的本地文件和服务器的文件冲突了 2.1.3 pull 时 2.2 对应工具 2.3 …...

四大自平衡树对比:AVL树、红黑树、B树与B+树

AVL树、红黑树、B树和B树的对比与应用场景 树系列相关文章&#xff08;置顶&#xff09; 1、从链表到平衡树&#xff1a;二叉查找树的退化与优化 2、自平衡二叉查找树&#xff1a;如何让二叉查找树始终保持高效 3、AVL树入门&#xff1a;理解自平衡二叉查找树的基础 4、红黑树全…...

BUUCTF Pwn ciscn_2019_es_2 WP

1.下载 checksec 用IDA32打开 定位main函数 发现了个假的后门函数&#xff1a; 看看vul函数&#xff1a; 使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造 所以使用栈迁移&#xff1a; 栈迁移需要用到leave ret 使用ROPgadget找地址&#xff1a; …...

MongoDb-mongosh-登录

本地登录 mongosh --username root --password xxx 参考&#xff1a;Connect to a Deployment - MongoDB Shell...

C语言day3:shell脚本

一、作业题3 使用数组求出当前目录下.sh文件的个数 二、作业题4 使用数组求家目录下文件的个数 三、思维导图...

微信小程序Uniapp

使用命令行创建项目&#xff08;vuets&#xff09; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project然后用HBX打开项目 再安装依赖 npm i 再运行开发版本&#xff0c;生成dist目录 pnpm dev:mp-weixin 注意要设置APPid 再用微信小程序打开...

mongoTemplate的复杂组装条件查询

mongoTemplate不像SQL那么灵活&#xff0c;组装条件较为复杂。 如下演示了查询类似于 AND name ‘张三’ OR age 12 NOT birthday > 2024-12-31 这类结构的代码示例。 脑子里的范围图&#xff1a; 所有的AND锁定一个范围&#xff0c;再跟所有的OR组成的范围取并集&#…...

httpslocalhostindex 配置的nginx,一刷新就报404了

当你的Nginx配置导致页面刷新时报404错误时&#xff0c;通常是由于以下几个原因造成的&#xff1a; 静态文件路径配置错误&#xff1a;Nginx没有正确地指向静态文件的目录。前端路由问题&#xff1a;如果是SPA&#xff08;单页应用&#xff09;&#xff0c;刷新页面时Nginx没有…...

pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除

在 Pandas 中&#xff0c;如果需要删除全部为 0 的行或列&#xff0c;可以通过 .all() 方法来判断行或列是否所有元素都为 0&#xff0c;然后删除这些行或列。 代码示例 示例数据&#xff1a; import pandas as pd# 示例数据 data {A: [0, 2, 0, 4],B: [0, 0, 0, 0],C: [0, …...

IO Virtualization with Virtio.part 1 [十二]

久等了各位&#xff01; 本篇开始讲解 IO 虚拟化中的 virtio&#xff0c;我会以 Linux 的 IIC 驱动为例&#xff0c;从 IIC 驱动的非虚拟化实现&#xff0c;到 IIC 驱动的半虚拟化实现&#xff0c;再到最后 X-Hyper 中如何通过 virtio 来实现前后端联系&#xff0c;一步步把 v…...

ShardingSphere-Proxy分表场景:go测试案例

接续上篇文章《ShardingSphere-Proxy分表场景测试案例》 go测试用例&#xff1a; package mainimport ("fmt""math/rand""time""github.com/bwmarrin/snowflake""gorm.io/driver/mysql""gorm.io/gorm""gor…...

OpenStack系列第四篇:云平台基础功能与操作(Dashboard)

文章目录 1. 镜像&#xff08;Image&#xff09;添加镜像查看镜像删除镜像 2. 卷&#xff08;Volume&#xff09;创建卷查看卷删除卷 3. 网络&#xff08;虚拟网络&#xff09;创建网络查看网络删除网络 4. 实例类型创建实例类型查看实例类型删除实例类型 4. 密钥对&#xff08…...