- 博客(21)
- 收藏
- 关注
原创 代码随想录算法训练营Day23|回溯算法
39. 组合总和39. 组合总和给你一个的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的 所有,并以列表形式返回。你可以按返回这些组合。candidates中的数字可以。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为target的不同组合数少于150个。2 和 3 可以形成一组候选,2 + 2 + 3 = 7。注意 2 可以使用多次。7 也是一个候选, 7 = 7。仅有这两种组合。[]
2026-02-08 10:18:59
569
原创 代码随想录算法训练营Day21|二叉树
二叉树的题目一般有两种思考方式一种是递归,一种是非递归(大部分就是迭代法),递归遍历有三种遍历顺序,分别是前中后序遍历,一般求深度,创建二叉树,验证二叉树用前序(从上往下),求高度用后序(从下往上),如果涉及到了二叉搜索树那么大概率是中序,因为中序遍历二叉搜索树得到的有序的。
2026-01-31 10:56:35
562
原创 代码随想录算法训练营Day20|二叉树
235. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]6节点2和节点8的最近公共祖先是6。2节点2和节点4的最近公共祖先是2, 因为根据定义最近公共祖先节点可以为节点本身。
2026-01-29 18:48:25
536
原创 代码随想录算法训练营Day18|二叉树
双指针的思路,这道题本质上是求解中序遍历的两个节点的差值(准确来说是后一个节点的值减去前一个节点的值,因为这是二叉搜索树),直白的做就是把中序遍历的结果存进数组,这样只需要比较数组相邻两个元素的差值,但是利用双指针就不需要创建数组了,在遍历的同时就可以对结果进行运算,一个指针pre存放上一个节点,一个指针cur存放当前节点,不过要注意的是一开始pre需要赋值成null,并且需要让递归空跑一次(其实就是把最先遍历的节点能够赋值给pre)给你一个含重复值的二叉搜索树(BST)的根节点。的最近公共祖先是节点。
2026-01-29 13:02:35
562
原创 代码随想录算法训练营Day16|二叉树
513.找树左下角的值给定一个二叉树的root,请找出该二叉树的节点的值。假设二叉树中至少有一个节点。17。
2026-01-25 15:41:21
639
原创 代码随想录算法训练营Day15|二叉树
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。难,回溯太难想了,关键是回溯放置的位置,而且回溯只需要删掉最后一个元素就行,需要回溯的主要原因是要储存路径,并且要更新路径。在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。其实会发现叶子节点并不需要单独考虑,所以精简的代码就是。,返回所有从根节点到叶子节点的路径。层(从第 0 层开始),则该层包含。是指没有子节点的节点。,求出该树的节点个数。
2026-01-24 13:32:53
631
原创 代码随想录算法训练营Day11|栈与队列
感觉栈和队列都是为数据处理提供了一个缓冲区,让新的元素可以与缓冲区里面的元素进行比较操作,然后不断地对缓冲区进行改变,最后从缓冲区里面寻找答案,要不然是栈顶(队首)元素,要不然是栈(队列)是否为空,要不然就是整个栈(队列)的元素。
2026-01-16 13:47:58
677
原创 代码随想录算法训练营Day9|字符串
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。双指针的运用太广泛了,快慢指针,滑动窗口,还有想向指针避免重复,往往用出来就可以减少时间复杂度,而且常用常新,真的要灵活运用。第二行为字符串 s,代表需要旋转的字符串。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。
2026-01-13 14:15:47
617
原创 代码随想录算法训练营Day8|字符串
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。这道题为数不多直接秒的,双指针直接秒,如果是交换数据的话除了申请一个临时变量temp外还可以用异或的方法来实现。编写一个函数,其作用是将输入的字符串反转过来。打印一个新的字符串,其中每个数字字符都被替换为了number。不要给另外的数组分配额外的空间,你必须。
2026-01-11 12:12:40
422
原创 代码随想录算法训练营Day7|哈希表
454.四数相加II给你四个整数数组nums1nums2nums3和nums4,数组长度都是n,请你计算有多少个元组2两个元组如下:1就是把四个数组变成两个数组,然后就把问题转化成了两数之和的问题,要注意的是Key依然存的是元素的值,但是Value不再是存索引,而是出现Key对应元素的次数,看完老师的码我发现我铸币了,我都用getOrDefault()了,根本就不需要先一步进行containsKey()判断这是老师写的383. 赎金信ransomNote和magazine,判断。
2026-01-10 14:27:05
1008
原创 代码随想录算法训练营Day5|链表
首先要熟练掌握链表的一些基本操作(增删改查),然后就是在链表的一些操作中利用双指针和虚拟头结点非常方便,要知道快慢指针分别代表啥,要知道解题需要cur指到哪个节点,是目标节点,还是目标节点的前一个节点。
2026-01-08 12:50:47
1013
原创 代码随想录算法训练营Day4|链表
因为我现在学的是Java,所以我问了大D老师Java里面咋定义链表单链表定义int val;// 节点值// 指向下一个节点的指针。
2026-01-07 22:23:40
875
原创 代码随想录算法训练营Day3|数组
首先基础的就不提了,说说我对每道题的感受吧数组想要删除元素不能直接删除,只能覆盖二分法查找利用双指针相较于直接查找能够降低时间复杂度,非常的方便有序数组的平方也是如此,暴力算法就是全部平方加快排,但是利用双指针从两边逼近,就只需要一层循环,一次遍历求最小长度子数组则是采用了滑动窗口,其实本质上也是对双指针的运用,只不过要找好哪个作为循环主动动,哪个在循环内被动动螺旋矩阵这种则是要找到不变量,遵循一个原则(左闭右开),就可以不用过多考虑边界判定条件,然后就是一层一层剥开。
2026-01-05 19:03:13
1259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅