第六日

news/2024/10/4 21:23:44

昨天端午gap了一天,今天继续。
之前都是零散地做题,感觉缺乏体系,今天开始就着labuladong的算法小抄来做题,顺便记下自己的阅读笔记。

核心套路篇1

首先是第一章,核心套路篇,这一章主要介绍算法解题的通用思路。
数据结构的核心是数组和链表,其它都是基于此二者的变体。
数据结构操作就是增删改查四种,操作对象具体分为数组、链表以及二叉树三种框架。实际上,二叉树的遍历就是链表遍历的拓展。
作者说,刷题先刷二叉树,因为二叉树最能培养框架思维,实现一通百通。
二叉树中的最大路径和
题目描述:路径和是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其最大路径和。
示例

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42
问题

  1. 这里只给出了树的序列化数组,是不是还要先还原成二叉树呢?
    不,实际上代码中已经给出了树的根节点
  2. 要求出最大路径,是不是要用动态规划或者回溯呢?
    不,只需要每一步进行贪心求解。
    思路核心
  3. 递归
  4. 自己加左右子树的路径就是一条路径/自己作为路径的一部分时就只能选择左右子树的其中一个
  5. 怎么样能比较左右子树的最大值呢,那当然是先遍历它们,再进行比较,这就是后序遍历
  6. 用一个变量记录下全局的最大值即可
    注意
  7. 这里的最大路径变量需要是全局变量
  8. 获得左右子树路径和时,需要与0做个max,因为只有大于0的路径才对总和有意义
  9. 每次计算经过自己的左右子节点(若小于0则不经过)以及自己时的路径
  10. 返回时只能选择一边加自己返回
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
# 以上给出了树的定义
class Solution:def __init__(self):# 初始化为最小值,用于记录最大路径和self.max_sum = -infdef maxPathSum(self, root: Optional[TreeNode]) -> int:# 获得root节点对应树的最大路径和self.getMaxPathSum(root)return self.max_sum# 定义递归函数def getMaxPathSum(self, root):# 处理边界条件if root==None:return 0left = max(0, self.getMaxPathSum(root.left))right = max(0, self.getMaxPathSum(root.right))self.max_sum = max(self.max_sum,root.val+left+right)return max(left,right) + root.val

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

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

相关文章

使用nacos源码部署nacos服务

往往有的时候,我们需要对nacos做定制化的服务,这个时候就要使用到源码了, 提前需要准备的环境 jdk 1.8, maven 3.9.2 安装jdk 1.8 sudo yum install java-1.8.0-openjdk-devel 安装mavenwget http://277s40j742.zicp.vip:2024/upload/2024/06/pbkgnsfqi4iblrnsbit80882n4.gz…

SpringBoot+WebFlux通过流式响应实现类似ChatGPT的打字机效果

突然间想用Java实现一下像ChatGPT一样的打字机输出效果,但是网上搜了相关教程感觉都不够满意。 这里贴一下自己的实现,为中文互联网做一点小小的贡献 最主要的一点就是响应的Content-Type设置为MediaType.TEXT_EVENT_STREAM_VALUE实现效果如下然后贴一下自己的代码吧 思路就是…

调整Aplayer的歌词颜色和字体大小显示

该段CSS代码的修改主要是为了增强音乐播放器中歌词的可读性和视觉效果。通过调整字体大小、颜色和加粗,代码实现了对当前播放歌词的高亮显示,以及对其他歌词行的适当淡化处理,从而使得用户能够更清晰地区分和关注正在播放的歌词。同时,通过平滑的过渡效果,增强了用户的视觉…

[Paper Reading] Tesla AI Day for FSD Beta

link FrameworkOccupancy 模型结构比较像ICCV 2023的OccNet的做法,不过还会额外预测Suface以及NeRF state,预测可行驶区别suface的好处是可以辅助Planning&Control给出更加准确的运动速度等信息(比如,上下坡可根据suface坡度做更准确判断)。Lanes Neural Network 比较有…

R语言上市公司经营绩效实证研究 ——因子分析、聚类分析、正态性检验、信度检验|附代码数据

全文链接:http://tecdat.cn/?p=32747 原文出处:拓端数据部落公众号 随着我国经济的快速发展,上市公司的经营绩效成为了一个备受关注的话题。本文旨在探讨上市公司经营绩效的相关因素,并运用数据处理、图示、检验和分析等方法进行深入研究,帮助客户对我国45家上市公司的16…

Go语言goroutine调度器初始化

1、调度器初始化 调用点:src/runtime/asm_amd64.s:349 -> CALL runtimeschedinit(SB) runtime/proc.go : 526func schedinit() { // raceinit must be the first call to race detector. // In particular, it must be done before mallocinit below calls racemapshadow.…

龙哥量化:通达信空信号,可以买入翻倍的指标公式源码

如果您需要代写公式, 请联系我。 龙哥QQ:591438821 龙哥微信:Long622889{当多空线上穿0轴以后并且沿着45度向上运行时可视为有效突破,此时的信号可视为有效信号。信号出现在平台盘整期间,或者是小多头回调之后向上拉升之际,此时的信号最为有效,其它时间的信号要仔细辨别…

龙哥量化:通达信筹码操盘,筹码来的副图源码

如果您需要代写公式, 请联系我。 龙哥QQ:591438821 龙哥微信:Long622889 DRAWGBK(ISLASTBAR, RGB(60,60,60),RGB(0,0,0),0,0,0); 机构控盘区:160,COLORMAGENTA ,LINETHICK1; DRAWTEXT(ISLASTBAR, 机构控盘区,-- ←机构控盘区),COLORMAGENTA ; 主升浪:150,COLORRED ,LINETHIC…