自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 代码随想录算法训练营第21天|93.复原IP地址,78.子集,90.子集II

一题有很多的相似之处。都是先对每一种可能都进行一次判断,如果合格才会被加入并递归。此外有一些api需要记住。思路:其实这个就是很简单了,就是加入结果的条件删去即可,所有的遍历都加入到结果中。这些题目中,感觉难的就是分割问题,其他的都是格式模板。有相似之处,就是规避掉重复的元素导致的重复的解。

2025-08-09 10:38:48 280

原创 代码随想录算法训练营第20天|39. 组合总和,40.组合总和II,131.分割回文串

思路:和之前的相比,就是能够重复使用当前的元素,所以递归的时候,就传进去的startIndex就是保持当前的即可,而不是像之前的需要+1。思路:每次添加新的结果之前,先对是否是回文串进行判断,如果是,那么就加入到path里面,如果不是,那么i+1后再来进行判断。我们在判别完第一个1的全部情况后,不要再递归第二个1的情况了,第二个1的作用就是提供[1,1,6]这一种解。思路:这里其实就是在最基础的回溯算法模板的基础之上,规避掉了重复元素,与后续元素再一次配对成新的解。以candidates =

2025-08-08 10:31:54 248

原创 代码随想录算法训练营第19天| 77. 组合,216.组合总和III,17.电话号码的字母组合

思路:先把每个数字对应的字母写好,构成完整的可选列表。后面就是根据这个每一层遍历即可(和之前遍历1~9自然数一样)。

2025-08-06 17:16:27 318

原创 代码随想录算法训练营第18天| 669. 修剪二叉搜索树,108.将有序数组转换为二叉搜索树,538.把二叉搜索树转换为累加树

(由于只涉及当前节点的处理,发现已经超出范围,处理后都可以直接返回节点了,因为下面的也已经全部完成了,所以只要管好当前层就好)二叉树的典型例题就做完了,感觉高强度的密集训练还是很有效果的,如果有想提升代码能力的同伴,真可以进行密集高强度的练习,这样就会找到解题的规律。持续的训练递归感觉熟练了很多,其实每一次都只需要对当前的节点进行处理即可,千万不要将左右节点混进去,这样会一层套一层。思路:这个感觉就是中序的模板吧,可以记住,万一做不出来,还可以先将二叉搜索树变成有序数组,处理完成后,再变回二叉搜索树。

2025-08-01 21:23:06 217

原创 代码随想录算法训练营第17天| 235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450.删除二叉搜索树中的节点

思路:这道题也是利用二叉搜索树的特性,递归到目标值等于当前节点值。那么需要从右子树中寻找出当前最小的节点数,并进行替换,这样才能保证二叉搜索树特性保持不变。因为当前节点比两目标值大,那么就只需要递归左边,相反,要是比两目标值小,那就是右侧。如果当前节点比一个目标值大,比一个目标值小,那么刚好,这就是最近的公共祖先。由于他已经是右侧最小的数了,所以他肯定是没有左子节点的。思路:其实很简单,根据二叉搜索树的特性,一直判断、递归到节点为null,这样就创建一个新的节点,然后返回即可。

2025-07-29 18:03:53 305

原创 代码随想录算法训练营第16天|530.二叉搜索树的最小绝对差, 501.二叉搜索树中的众数,236. 二叉树的最近公共祖先

思路:这里也是利用了二叉搜索树的特性,使用中序遍历会是递增的,因此可以当前某数值出现的次数跟最大值进行比较,即可更新众数。值得注意的是,更新众数不需要很着急,就等计数全部完成后再统计即可。思路:这里一定需要注意的点是,这里的树是二叉搜索树,用中序遍历的话,这会是一个递增的序列,因此最小绝对差肯定是出自相邻两节点间。递归的时候分别计算即可。思路:这道题就很明显的体现出后序的好处了,后序最大的好处就是可以从下而上的遍历,这对求子树高度,找最近的公共祖先这种非常适合。

2025-07-29 16:37:48 220

原创 代码随想录算法训练营第十五天|654.最大二叉树, 617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树

思路:和一般的递归思路一样,就是处理好本节点即可,本节点的左右子节点交给下一迭代处理即可。思路:这个和第一题一样,也是对当前节点进行取值范围的确定,确定好终止条件即可。思路:这里其实就是一步步的缩小左右节点的范围,就可以得到一个完整的递归树。然后搞清楚想处理的数,处理好截止条件即可。这道题很简单,简单的遍历即可。

2025-07-27 18:21:32 258

原创 代码随想录算法训练营第十四天|513.找树左下角的值,112.路径总和,113路径之和Ⅱ,106.从中序与后序遍历序列构造二叉树

思路:这道题不简单,利用中序是左中右的特性,将左节点和右节点进行分开。值得注意的是:后序遍历的数组里面的数分别代表:[...右子节点的右子节点,根节点的右子节点,根节点]。2.需要注意回溯的问题:由于list是共享的引用,当遍历下一层,添加节点进入list后,上层的list也被改变了,所以需要在遍历结束后,进行回溯。思路:这里我尝试使用了递归法,其实也不是很难,就是判断当前节点的情况,是否还有左右子节点,如果没有,那么就判断总和是否等于目标值,然后如果还有左右节点,那么就继续递归。为什么上面不需要回溯呢?

2025-07-24 20:04:00 194

原创 代码随想录算法训练营第十三天|110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和,222.完全二叉树的节点个数

思路:再深度优先遍历的途中,不断的比较左右两侧的深度是否保持在 1 层内。如果有一侧已经不平衡了,就剪枝直接判定不平衡,一路return -1 即可。目前对于递归掌握的不是很熟练,要等二刷的时候,多加理解练习。思路:这道题还是可以使用广度优先搜索,在遍历每一个节点的同时,去记录每一条路径即可。当遍历到当前节点的左右子节点都为 null 时,就可以向结果添加一条完整路径了。思路:这里其实用迭代法就很简答,不管是不是完全二叉树,只需要记录每一层的个数即可。思路:这里需要注意的一点就是,

2025-07-22 17:18:50 295

原创 代码随想录算法训练营第十二天|226.翻转二叉树,101. 对称二叉树

思路:这里需要注意的是,加入当前节点的左右节点的顺序,此外,原根节点不需要记录了,只需记录根节点的左右节点即可,然后就可以开始进行比较了。思路:这里和之前的代码没有很多的区别,其实就是在把Treenode加入队列之前,先把左右节点进行互换就好,剩下的正常模板即可。

2025-07-21 21:24:04 160

原创 代码随想录算法训练营第十一天|二叉树的层序遍历——递归法、迭代法

思路:这几道题其实都可以使用一套代码模板解决(前、中、后序三种就是添加的顺序进行调整即可。:通过递归或栈深入到树的底部再回溯)思路:一层层横向遍历,用队列实现。

2025-07-20 20:59:40 315

原创 代码随想录算法训练营第十天| 150. 逆波兰表达式求值 ,239. 滑动窗口最大值, 347.前 K 个高频元素

思路:这道题使用单调队列很容易理解,相当于我单独拿一个双向队列(这里只记录索引),去维护一个相对的最大值,然后保持当前最大值始终在队列的最前面,如果后面出现较大的数,那么就从后面一个个剔除比自己小的数(如果该数不是最大的,为次大的,也同理,从后提出较小的数)。此外,这里运用到了Map方法遍历键值对的方法,这个都是需要常看常复习的。思路:其实关于栈的题目都感觉不是很难,难在要想到面对需要动态回退处理时,想到使用栈。值得注意的是,我觉得应该再判别大小前,要把已经不在滑动窗口的先剔除,再比较大小。

2025-07-15 21:00:15 252

原创 代码随想录算法训练营第九天| 232.用栈实现队列 ,225. 用队列实现栈, 20. 有效的括号,1047. 删除字符串中的所有相邻重复项

值得注意的地方是,使用完栈后,出栈的顺序其实是反的,所以需要再变化一下。1.这个题可以不用两个队列去实现栈,但是作为初学者,我还是先学会了两个队列的方法,其实不是很难,就是添加元素的时候,让原本队列的末尾,通过第二个队列,变成了队列的第一个。2. 只使用一个队列完成该问题,也很简单,其实就是让原本最前面的先出去,再进来,变成最后一个就可以了。思路:这个题还是很有意思的,就是用两个栈去实现队列,一个专门接收,另一个专门输出。思路:这个题还是很巧妙的使用了栈。:如撤销操作、消除相邻元素。

2025-07-13 17:22:09 340

原创 代码随想录算法训练营第八天|151.翻转字符串里的单词,卡码网:55.右旋转字符串

思路:这道题其实把前面很多关于字符串的操作都进行了统一的运用。值得注意的是,StringBuilder类型的操作方法。思路:这道题其实最原始的方法是能写的,但是多次翻转会更加的简单。后面的kmp算法还是有难度的,二刷的时候再接着掌握吧。2.卡码网:55.右旋转字符串。

2025-07-12 16:05:35 116

原创 代码随想录算法训练营第七天|344.反转字符串,541. 反转字符串II,卡码网:54.替换数字

思路:其实是嵌套了上一道反转字符的代码,只是需要对每一次的判别条件进行细化。代码2就是巧妙的将右指针变成了Math.min(ch.length - 1, start + k - 1);思路:这道题其实逻辑不是很难,难在步骤较多并且基础语法需要扎实,首先统计有多少数字需要被替换,然后就是相应的创建数组,然后一个个比对着加入新数组。官方解答里面是先把原数组复制进新数组,然后依次比对填充,但我感觉没很多必要,拿着原数组一一比对就能完成。思路:还是很简单的,只需要两指针分别从首尾开始递归就行。

2025-07-03 17:19:38 313

原创 代码随想录算法训练营第六天|454.四数相加II 、383. 赎金信、 15. 三数之和、 18. 四数之和

我们先将指针指向第一个 -1 ,可以出现[-1,-1,2],[-1,0,1]这两种组合,那指针指向第二个-1时,他也会得到相同的结果,但是这样的结果不能输出两次。比如组合[-2,-1,1,2] 和 [2,-1,-2,1]是两个不同且都合理的结果(这也是可以通过统计次数来求解的原因)。同样,同一轮次下,左右两指针也要考虑去重,比如右指针指向第二个1,那么当前情况下,右指针为1的情况我已经讨论完了,所以需要跳过。比如有一个已经排序后的数列[-4,-1,-1,-1,-1,0,1,1,2];

2025-07-01 21:08:49 301

原创 代码随想录算法训练营第五天|242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数,1. 两数之和

今天终于把前面落下的进度赶上了,但是理解的很囫囵吞枣,明天来总结下吧,强度太高了。一. 242.有效的字母异位词。二. 349. 两个数组的交集。三. 202. 快乐数。四. 1. 两数之和。

2025-06-30 20:50:05 207

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交 ,142.环形链表II

思路:这个题巧妙的地方就在于,可以让一个指针按照题目要求,先行一步,这样出现了快指针已经到null了,慢指针刚好指向了要被删除的元素的上一个,这样就可以巧妙的删除了(这个怎么设计,临时去推一下就可以知道怎么设计)总结:链表的增加,正序删除,倒序删除,判断环形链表入口等都是很模块化的需求,可以总结出来以后都是固定模式去使用。思路:这是一道非常经典的 如何找到环形链表的入口的题目,主要是使用了快慢指针,值得常刷。思路:这道题其实比较简单,运用的是尾对齐的方法,先让两链表对齐,再逐一比对即可。

2025-06-30 16:32:00 209

原创 代码随想录算法训练营第三天| 链表理论基础,203.移除链表元素 ,206.反转链表,707.设计链表

但是头节点没有上一个节点,因此,我们可以虚拟一个节点指向头节点,这样我们就可以以相同的方式去删除每一个节点了。那如果下一节点不是需要删除的节点,那么就把当前节点换成下一节点即可(前进一步,去看下一阶段的情况了)前一位变成当前的节点。链表中的节点在内存中不是连续分布的 ,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。链表的长度可以是不固定的,并且可以动态增删, 适合数据量不固定,频繁增删,较少查询的场景。数组在定义的时候,长度就是固定的,如果想改动数组的长度,就需要重新定义一个新的数组。

2025-06-29 19:55:09 282

原创 代码随想录算法训练营第二天| 209.长度最小的子数组、 59.螺旋矩阵II、开发商购买土地

题目其实不难,主要是怎么做方便快捷,为了避免多层for循环,可以在第一次录入时,就计算一次全体总和,然后再计算出每一列每一行的加和,这样 ,划分的线一行一行的往下移,每一行的和就能轻松得到,剩下的行的和,仅需要 “sum - 前面的每一行和” 就行。这里非常明显的感觉到左闭右开区间设置的好处,这样起点都可以包括进去,终点不考虑,成为了下一区间的起点,绕一圈的格式非常的统一。本题使用的是滑动窗口的方法,难度不是很大,就是当前子数组的和大于target后,就剔除左侧的数,子数组的和小于target。

2025-06-28 21:23:50 426

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素、977.有序数组的平方

总的来说,数列不是很难,但是基本功还需要加强,一些基本的语法不熟练,比如Array.sort();后续随着不断的练习,去增加熟练度。

2025-06-28 20:40:54 257

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除