- 博客(19)
- 收藏
- 关注
原创 代码随想录算法训练营day16 | 530.二叉搜索树的最小绝对差 - Java代码
【代码】代码随想录算法训练营day16 | 530.二叉搜索树的最小绝对差 - Java代码。
2025-03-04 17:36:31
189
原创 代码随想录算法训练营day15 | 654.最大二叉树 - Java代码
【代码】代码随想录算法训练营day15 | 654.最大二叉树 - Java代码。
2025-03-04 16:35:09
284
原创 代码随想录算法训练营day14 | 513. 找树左下角的值、112. 路径总和 - Java代码
通过层序遍历(广度优先搜索)来解决。层序遍历的基本思想是按照层序遍历二叉树,每一层从左到右访问节点。当访问到最后一层时,第一个访问到的节点就是最左边的值。
2025-02-27 22:23:32
220
原创 代码随想录算法训练营day13 | 222. 完全二叉树的节点个数、110. 平衡二叉树 - Java代码
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。给定二叉树 [1,2,2,3,3,null,null,4,4]给定二叉树 [3,9,20,null,null,15,7]给定一个二叉树,判断它是否是高度平衡的二叉树。给出一个完全二叉树,求出该树的节点个数。返回 false。
2025-02-26 21:03:32
381
原创 代码随想录算法训练营day12 | 226.翻转二叉树 - Java代码
【代码】代码随想录算法训练营day12 | 226.翻转二叉树 - Java代码。
2025-02-25 22:47:42
265
原创 代码随想录算法训练营day11 | 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历 - Java代码
写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。前序中序后序的序指的是根节点的位置。
2025-02-24 22:41:27
352
原创 代码随想录算法训练营day10 | 150. 逆波兰表达式求值 - Java代码
如果遍历到操作符,则从stack中pop出两个数字进行计算,再push进去。如果遍历到数字,则push进stack。逆波兰表达式就是后缀表达式。遍历String[]
2025-02-23 23:29:25
232
原创 代码随想录算法训练营day09 | 232. 用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项 - Java代码
1. push(x): 先把元素x放入queue2,然后判断1是否为空,为空的话,就把2赋给1,如果不为空,那么就把1的元素poll到2中,再把2赋给1。2. pop(): 要从队列首部移除元素,就把stack1中的元素,挨个弹出压入stack2,然后从stack2中弹出一个元素。思路:使用栈,循环遍历字符串,如果当前字符和栈顶元素一样,则pop栈顶元素,如果不一样,就push进去。如果stack2不为空,直接pop() stack2中的元素。3. 最后,栈为空,则为有效字符串,否则,无效。
2025-02-23 22:52:03
461
原创 代码随想录算法训练营day08 | 151. 反转字符串中的单词、27. 移除元素 - Java代码
方法一:将字符串拆分为两个部分s.substring(0, s.length()-k)和s.substring(s.length()-k), 然后后半部分拼接到前半部分的前面。用昨天的反转字符串reverse(StringBuilder sb, int start, int end)用昨天的反转字符串reverse(StringBuilder sb, int start, int end)3. 最后再将每个单词反转【blue is sky the】1. 先移除多余的空格【the sky is blue】
2025-02-20 23:14:56
219
原创 代码随想录算法训练营day07 | 344. 反转字符串、541. 反转字符串II、54. 替换数字(卡码网) - Java代码
res.reverse()将原字符串分成了一个个长度为2k(最后一个串长度可能不够)的子串,然后翻转每个子串的前k个位置。思路:两个指针一头一尾,交换字符,然后前面的指针++, 后面的指针--,再交换。2. 然后处理剩余的不足以构成一个2k范围区间的字符。字符数为奇数时:head==tail时,退出循环。2k~3k+1 做reverse。字符数为偶数时:head>tail时,退出循环。0~k-1 做reverse。1. 先循环处理每个2k范围内的前k个字符。so:head>=tail时,退出循环。
2025-02-19 23:30:23
366
原创 代码随想录算法训练营day06 | 454.四数相加II、383. 赎金信 、15. 三数之和、18. 四数之和
可以先循环前两个数组,把各个和的结果存到map里,然后再循环后两个数组,取后两个数组的和的相反数,判断是否在map里,以及有几个。题目是从四个数组里分别取一个数,和为0,即为满足条件。因为前两个数组的和,可能有相同的。
2025-02-18 22:38:20
272
原创 代码随想录算法训练营day05 | 242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
所以需要一个HashSet,存放每一个计算得到的平方和,当n计算的平方和不是1且存在set中,则返回false。不断取n的每一位计算平方和,然后拿平方和的每一位继续计算平方和,直到n==1,说明这个数是快乐数。如果n==之前得到过的平方和,说明陷入了无限循环,n不是快乐数。定义一个数组nums[26],表示26个英文字母的对应的位子。循环nums数组,如果数组中有非0数字,说明不是字母异位词。循环s,s内字母的在nums数组中位置+1。循环t,t内字母的在nums数组中位置-1。思路:(set暴力解法)
2025-02-17 23:09:36
195
原创 代码随想录算法训练营day03 | 203.移除链表元素、707.设计链表、206.反转链表
【代码】代码随想录算法训练营day03 | 203.移除链表元素、707.设计链表、206.反转链表。
2025-02-16 22:20:06
199
原创 代码随想录算法训练营day02 | 209. 长度最小的子数组、59. 螺旋矩阵Ⅱ
【代码】代码随想录算法训练营day02 | 209. 长度最小的子数组、59. 螺旋矩阵Ⅱ。
2025-02-13 22:59:38
278
原创 代码随想录算法训练营day01 | 704. 二分查找、27. 移除元素、977. 有序数组的平方
【代码】代码随想录算法训练营day01 | 704. 二分查找、27. 移除元素、977. 有序数组的平方。
2025-02-12 23:01:12
199
原创 poj3278(Catch That Cow)_BFS_Java(已AC)
poj3278(Catch That Cow)_BFS_Java(已AC)poj3278Java版代码,使用宽度优先遍历
2022-08-05 16:53:31
165
原创 poj1426(Find The Multiple)_DFS_Java(已AC)
poj1426(Find The Multiple)_DFS_Java(已AC)poj1426代码Java版,使用深度优先遍历
2022-08-05 16:22:51
167
原创 poj1915(Knight Moves)_BFS_Java(已AC)
poj1915(Knight Moves)_BFS_Javapoj1915代码Java版,使用广度优先遍历
2022-07-03 11:30:57
235
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅