- 博客(141)
- 收藏
- 关注
原创 最大二叉数
[3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。- 只有一个元素,所以子节点是一个值为 1 的节点。- 只有一个元素,所以子节点是一个值为 0 的节点。- 空数组,无子节点。- 空数组,无子节点。
2025-08-25 18:55:13
219
原创 路径总和。
给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。true等于目标和的根节点到叶节点路径如上图所示。false树中存在两条根节点到叶子节点的路径:(1 --> 2): 和为 3(1 --> 3): 和为 4不存在 sum = 5 的根节点到叶子节点的路径。false由于树是空的,所以不存在根节点到叶子节点的路径。
2025-08-25 17:41:35
301
原创 Java零散知识点
Math.randon():返回[0,1)的随机小数。(int)Math.random()*100:返回0-99之间的随机数。int num=(int)Math.random()*100+1:返回1-100之间的随机数。
2025-08-08 18:42:27
195
原创 差分和前缀和
对于原数组 a[0...n-1] ,前缀和数组 preSum 满足:( preSum[0] = 0 ,方便边界计算)构建代码:i < n;++i) {a[0...n-1] ,差分数组 diff 满足:构建代码(直接初始化,或从原数组推导):i < n;++i) {- 前缀和是「区间和查询」的优化工具,适合数组静态、查询频繁的场景。- 差分是「区间更新」的优化工具,适合数组动态、更新频繁的场景。
2025-07-10 22:38:24
976
原创 递推|递归|分治的应用
与递归的关系:分治常以递归为实现手段,但分治更强调“拆分+合并”,递归更强调“自我调用”。核心:将复杂问题分解为与原问题结构相同的子问题,通过调用自身解决子问题,最终汇总结果。核心:将问题分解为多个独立的子问题,分别解决后,将子问题的结果合并得到原问题的解。- 动态规划问题(如“爬楼梯”,f(n) = f(n-1) + f(n-2))。- 问题规模大,且可拆分为规模相近的子问题,子问题可独立求解。- 斐波那契数列(第n项 = 第n-1项 + 第n-2项);- 问题可自然分解为规模更小的同类子问题。
2025-07-09 01:12:16
267
原创 模拟的应用
在编程中,模拟(模拟法) 是指按照问题的实际流程或规则,一步一步地“复现”过程,从而得到结果的方法。- 处理字符串的替换规则:如“每次将字符串中‘ab’换成‘c’,重复操作直到没有‘ab’”,直接按规则一步步替换即可。- 模拟日历翻页:给定起始日期,按“每天加1,月底切换月份,年底切换年份”的规则,计算N天后的日期。- 模拟银行排队:按“顾客依次排队、叫号办理业务、离开队列”的流程,记录每个顾客的等待时间。- 模拟交通信号灯变化:按“红→黄→绿→红”的周期循环,计算某一时刻的灯色。
2025-07-09 01:08:03
242
原创 枚举的应用
因此,当可能的情况数量过大时(比如超过10^6),通常需要换更高效的算法。枚举法(也叫穷举法)是一种通过逐一列举所有可能的情况,从中找出符合条件的解的方法。- 解决“密码是3位数字,最多试多少次能解开”,枚举000到999的所有组合(共1000种,数量少)。- 求解“方程x + y = 10(x、y为正整数)的所有解”,枚举x从1到9,计算对应的y即可。当问题的解空间(所有可能的答案范围)比较小,能被快速遍历完,就适合用枚举法。- 小规模的“组合问题”(如从5个数字中选2个,所有可能的组合)。
2025-07-09 01:05:49
521
原创 找树左下角的值
本体涉及以下几点:1.递归求深度的写法,我们在平衡二叉树中详细分析了深度应该怎么求,高度应该怎么求。2.递归中其实隐藏了回溯,在二叉树的所有路径中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。3.层次遍历,在二叉树:层序遍历登场升读讲解了二叉树层次遍历。
2025-07-05 03:41:36
302
原创 左子树之和
给定二叉树的根节点root,返回所有左叶子之和。24在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24root = [1]0。
2025-07-05 02:22:32
282
原创 递推|递归|分治
最近璃月的海灯节到了,一位来自码蹄集的小码哥正好游历至此,一种有趣的装饰图案引起了他的兴趣:这种图案将一个三角形每条边分为𝑛n等分,然后将对应的等分点相连,使得连成的线段平行于三条边中的一条,这样就构成了大三角套小三角的繁复图案。现在有许多类似的图案,这名学者想知道每个图案中各包含了几个三角形,请你帮帮他。
2025-07-04 17:54:15
526
原创 枚举。。。
菜地上挖了𝑛n行𝑚m列个坑,有一只跳蚤可以从任意一个坑作为起点无限次跳跃,同一个坑也可以重复跳到,但跳蚤只能垂直或者水平方向跳坑,而且不能跳到菜地外(这时候它会改变方向保证自己不掉出去或者停止)。每一跳距离固定为𝑠s个坑,当𝑠s为1表示跳到垂直或者水平方向紧相邻的隔壁坑里。求跳蚤可以从多少个不同的坑起跳,可以满足能在菜地里到达的坑数量为最大。
2025-07-04 17:19:30
814
原创 二叉树的最小深度
二叉树的最小深度就是第一个出现左右孩子不为空的深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。叶子节点是指没有子节点的节点。25。
2025-06-30 02:26:34
332
原创 二叉树的最大深度
深度:指从根节点到该节点的路径上的边的数量,根节点的深度为0,其孩子节点深度为1,以此类推。深度是从根节点往下度量的。- 高度:指从该节点到叶子节点的最长路径上的边的数量,叶子节点的高度为0,若一个节点的左右子树高度分别为h_1和h_2,则该节点的高度为max(h_1,h_2)+1。高度是从叶子节点往上度量的。
2025-06-29 02:46:00
1059
原创 模拟。。。
场景:比如“财务负数支出的分段计算”,-5.2 元按每段 -2 元拆分, -5.2 / -2 = 2.6 ,但向下取整后是 2 (因为要找不大于 2.6 的最大整数 ),不过实际业务里要结合逻辑,这里主要是体现负数向下取整的特性。- 地图网格移动:地图是 10×10 格子,角色每次横向移动 3 格,算“从第 8 列出发,最多能向左完整移动几次”, (8-1)/3=2 (向下取整),表示能完整移动 2 次(对应题目里计算可达坑数的逻辑 )。4. “网格、坐标相关的边界/步长计算”(和你题目强相关)
2025-06-27 21:48:15
361
原创 数组和指针
(a[0]+0)和a[0][0]是一回事、*(a[0]+1)和a[0][1]是一回事。而a[i]和*(a+i)是等价的,所以我们得到,*(a+i)+j就是a[i][j]的地址,*(*(a+i)+j)就是a[i][j]。我们可以把a[0]看成是一个一维数组的名字,这个一维数组有4个元素,它们是a[0][0]、a[0][1]、a[0][2]和a[0][3]。a[0]+0就是a[0][0]的地址、a[0]+1就是a[0][1]的地址、a[0]+2就是a[0][2]的地址、a[0]+3就是a[0][3]的地址。
2025-06-18 20:06:51
269
原创 Java课堂笔记12
3.所有的方法都是公开抽象的方法。public static 返回值类型方法名(形参列表)(//方法实现)private 返回值类型方法名(形参列表)(//方法实现)default 返回值类型方法名(形参列表)方法实现)是一种标准,接口的实现者和使用者都必须遵循的约定。2.多继承:接口与接口之间。注意:节有方法实现的非静态方法必须加defaalt。接口的基本语法:1.关键字:interface。实现:1.多实现:类与接口之间。继承:1.单继承:类与类之间。实现接口的类称为实现类。接口中可以定必私有方法。
2025-06-18 12:42:59
512
原创 Java课堂笔记11
(2)子类继承抽象类,必须实现抽象类中所有的抽象方法,除非子类还是抽象类;注意:①static方法中只能直接访问静态成员(属性和方法),不能直接访问非静态成员(必须通过。1.抽象方法只能在抽象的类里,只有方法的声明,没有方法的实现。(3)抽象类中即可以由抽象方法,也可以有非抽象方法;2.final修饰的方法:为最终方法,不能被覆盖,可以重载。赋值的位置:a.在声明的时候对其初始化。赋值的位置:a.在声明的时候对其初始化。②final修饰的类变量:没有默认值。2.static修饰的方法称为静态方法、类方法。
2025-06-18 12:25:25
188
原创 java课堂笔记10
1.多态:A a=new B();2.用a引用调用方法:a.m1();b.m1();3.实际运行时,m1运行A中的,m2运行B中的。
2025-05-28 18:49:33
392
原创 对称二叉树
在图中的代码里, compare 函数是用于判断二叉树两棵子树是否对称的自定义函数 ,其用法要点如下:函数定义cpp// 函数体内容- 返回值类型: bool 类型,用于返回两棵子树是否对称的结果, true 表示对称, false 表示不对称。- 参数:接收两个参数 TreeNode* left 和 TreeNode* right ,分别是指向两棵待比较子树的根节点的指针。
2025-05-27 16:50:46
924
原创 二叉树层序遍历
第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。, 以数组的形式返回每一层节点的平均值。因此返回 [3, 14.5, 11]。给定一个非空二叉树的根节点。以内的答案可以被接受。
2025-05-24 16:52:38
570
原创 二叉数的统一迭代法
顺序判断:和前序遍历类似,先将根节点入栈,每次从栈顶取出节点,处理其值,不过是先将左子节点入栈,再将右子节点入栈。最后将结果数组反转,得到的顺序就是左右中。顺序判断:使用一个指针 cur 从根节点开始,先不断将当前节点及其左子树节点压入栈, 直到左子树为空,此时从栈中弹出节点(左节点处理完了,处理中间节点 ),处理其值,然后让 cur 指向该节点的右子节点,继续上述过程。顺序判断:先将根节点入栈 ,然后每次从栈顶取出节点(根节点),处理其值,接着按照先右子节点后左子节点入栈。给你一棵二叉树的根节点。
2025-05-22 15:11:18
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅