自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

遇上一题的区别是本题是要找到和为n的k个数的组合,而整个集合已经是固定的了[1,...,9]。本题大家刚开始做会有点难度,先自己思考20min,没思路就直接看题解。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。该列表不能包含相同的组合两次,组合可以以任何顺序返回。的字符串,返回所有它能表示的字母组合。如果把 组合问题理解了,本题就容易一些了。所有可能的有效组合的列表。1.还是比较好解决的。

2024-02-22 16:46:40 306

原创 代码随想录算法训练营第二十四天|理论基础,77. 组合

其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。

2024-02-21 16:22:29 325

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

比起普通的删除操作,这道题我们需要处理一些本身不符合要求但子树符合要求的节点,具体做法是删除本身及一定不合要求的子树部分,将另一个子树接入原来的位置等待进一步的处理。在这几天与二叉树的相处中,深深地理解了一些相关题目的解法以及各种二叉树各自的特性,而且面对不同的题目,我们应当选择不同的遍历方法。树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点。本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。

2024-02-20 17:38:33 468

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

二叉树真是二二又叉叉啊。

2024-02-19 18:28:03 854 1

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

二叉树二叉树二叉树二叉树二叉树

2024-02-17 18:03:20 479 1

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

二叉树二叉树二叉树

2024-02-16 16:55:15 997 1

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

递归函数是有返回值的,如果递归函数返回true,说明找到了合适的路径,应该立刻返回。106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。参数:需要二叉树的根节点,还需要一个int,用来计算二叉树的一条边之和是否正好是目标和。返回值:遍历的路线,并不要遍历整棵树,所以递归函数需要返回值,可以用bool类型表示。本题 又一次涉及要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。总的来说就是,用前序遍历确保遍历到最先是左子树,记录深度最大的叶子节点。

2024-02-15 17:12:02 302 1

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

范例中的思路是用一个vector存储路径上的节点,当左右孩子节点都为空时,将存储在,vector里的节点修饰成一个字符串,并存入结果vector中,向左向右进行遍历时,递归之后跟一个回溯。分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。这是大家第一次接触到回溯的过程, 我在视频里重点讲解了 本题为什么要有回溯,已经回溯的过程。递归的过程中依然是遇到空节点了为终止,返回0,表示当前节点为根节点的树高度为0。,返回所有从根节点到叶子节点的路径。

2024-02-14 19:20:18 376 1

原创 代码随想录算法训练营第十六天|104.二叉树的最大深度 559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

在完全二叉树中,如果递归向左遍历的深度等于递归向右遍历的深度,那说明就是满二叉树;在完全二叉树中,如果递归向左遍历的深度不等于递归向右遍历的深度,则说明不是满二叉树。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。所在做的时候,判断其子树是不是满二叉树,如果是则利用公式计算这个子树(满二叉树)的节点数量,如果不是则继续递归。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。

2024-02-08 17:35:42 382

原创 代码随想录算法训练营第十五天|层序遍历 10,226.翻转二叉树,101.对称二叉树 2

这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。因为我们要通过递归函数的返回值来判断两个子树的内侧节点和外侧节点是否相等,所以所使用的只能是后序遍历。看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。想要翻转它,交换每一个节点的左右孩子即可。我这里采用了非递归前序遍历的方法,代码如下;(即逐层地,从左到右访问所有节点)。,翻转这棵二叉树,并返回其根节点。先看视频讲解,会更容易一些。给你一个二叉树的根节点。

2024-02-07 17:27:11 298 1

原创 代码随想录算法训练营第十四天|理论基础,递归遍历,迭代遍历,统一迭代

需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。与范例不同,这里的元素被直接接输出,具体情况具体讨论。这是统一迭代法的写法, 如果学有余力,可以掌握一下。二叉树的三种递归遍历掌握其规律后,其实很简单。这个在我以前的学习中一般叫非递归遍历。这种方法也可以叫做标记法。复习了有关二叉树的知识。中提到说使用栈的话,

2024-02-06 18:01:15 137 1

原创 代码随想录算法训练营第十三天|239. 滑动窗口最大值,347.前 K 个高频元素,总结

这里应该采用队列的方法,仔细一想,我们应该只需要记住队列在第一次移动时的最大值,然后因为移动是增删各一个数字,我们只要判断这个增加的和这个删去的数字是否对这个最大值会产生什么影响就可以了。和队列的新的应用,一对C加加标准库中一些结构之类也有了大概的了解,同时对他们各自的底层实现也有了一定的认识。我还了解了很多减少时间复杂度的解题思路,对我今后的学习大有裨益。如果是以前,我会设计一个类,里面设置两个值value count,对每个元素的次数进行统计。之前讲的都是栈的应用,这次该是队列的应用了。

2024-02-05 16:30:04 376 1

原创 代码随想录算法训练营第十一天|20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

要知道栈为什么适合做这种类似于爱消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。本题不难,但第一次做的话,会很难想到,所以先看视频,了解思路再去做题。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。看视频 我讲的都有哪些场景,落实到代码其实就容易很多了。第一种情况,字符串里左方向的括号多余了 ,所以不匹配。第二种情况,括号没有多余,但是 括号的类型没有匹配上。第三种情况,字符串里右方向的括号多余了,所以不匹配。会选择两个相邻且相同的字母,并删除它们。

2024-02-03 16:03:21 518 1

原创 代码随想录算法训练营第十天|理论基础,232.用栈实现队列,225. 用队列实现栈

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(可以大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。请你仅使用两个栈实现先入先出队列。了解一下 栈与队列的内部实现机智,文中是以C++为例讲解的。大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解。不过这里提供了一个优化方案,只用一个队列。了解了之前不知道的栈与队列的底层实现知识。设计一个输入栈和一个输出栈就可以解决。

2024-02-02 15:52:47 505

原创 代码随想录算法训练营第九天|28. 实现 strStr(),459.重复的子字符串,字符串总结,双指针回顾

那么既然前面有相同的子串,后面有相同的子串,用 s + s,这样组成的字符串中,后面的子串做前串,前面的子串做后串,就一定还能组成一个s。因为大家 算法能力还没到,细扣 很难的算法,会把自己绕进去,就算别人给解释,只会激发出更多的问题和疑惑。因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的疑问,先留着,别期望立刻啃明白,第一遍了解大概思路,二刷的时候,再看KMP会 好懂很多。KMP和本题,一刷的时候 ,可以适当放过,了解怎么回事就行,二刷的时候再来硬啃。

2024-02-01 18:04:14 557 1

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

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。因为题目的要求是输出符合要求即可,我便用for遍历这个字符串,遇到数字就把就直接,输出number,如果抠字眼的话,可以用stream之类的来处理这个把它转化成一个字符串,这里的代码就不多写了。字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。

2024-01-31 20:29:04 927

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

如果nums[i] + nums[left] + nums[right] > 0 就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。在这两天我了解了许多我以前所不知道的具体解法,也理解了一些之前我并没有学习过的一些结构,例如unordered_map,我明白了它的用法,可以将它运用在实际中。建议:本题虽然和 两数之和 很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下 双指针法的思路,文章中讲解的,没问题 哈希法很麻烦。

2024-01-30 19:37:49 1112 1

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

简单来说就是从a到z,26个字符,进行一个编号(可以通过其asc码的方式进行编号),把它存储在一个26个位空间的数组中,然后将两个数组进行比较,代码具体操作是加上前一个字符串的字符数,再减去后一个字符串的字符数,这样可以遍历这个数组,若所有的元素都为零,就可以判断两个字符串是字母异位词。建议:本题虽然是 力扣第一题,但是还是挺难的,也是 代码随想录中 数组,set之后,使用map解决哈希问题的第一题。建议:大家要了解哈希表的内部实现原理,哈希函数,哈希碰撞,以及常见哈希表的区别,数组,set 和map。

2024-01-29 21:49:04 1235

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

最近的题比较难,我只能边学边做边写博客(;′⌒`)。目录24. 两两交换链表中的节点题目:思路:19.删除链表的倒数第N个节点题目:思路:面试题 02.07. 链表相交题目:思路:142.环形链表II题目:思路:总结给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。首先老两样----dummyhead结点和current结点,方便之后的操作。用current结点对链表进行遍历,一次while循环current结点移动两位。注意

2024-01-27 20:05:21 1056

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

今天照例边做边写。链表理论基础关于这里的部分我上学期的数据结构课程已经有了较为全面的学习,就不多写了。

2024-01-26 21:16:03 1179

原创 代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结

有关于数组的学习到此为止,不得不说,我发现我此前对数组的认知还比较浅薄,通过这两天的学习,我已经了解到了很多新的解题的思路,收获颇丰。其中最重要的是,我学会了到了双指针的用法,它比两个for循环更加节省时间,也颇具巧思。希望我今后能继续坚持每天的学习。

2024-01-25 21:17:27 1123 2

原创 代码随想录算法训练营第一天|数组理论基础,704. 二分查找,27. 移除元素

用我的话来讲大概是这样:一开始快慢指针都指向数组的首位元素,在一次循环中,快指针先动,慢指针后动。若快指针指向的元素不为目标元素,二者“同速”遍历这个数组,且慢指针移动后它指向的元素会被赋值为快指针指向的元素;每次取查找范围的中点 mid,比较 nums[mid]和 target的大小,如果相等则 mid 即为要寻找的下标,如果不相等则根据nums[mid] 和 target的大小关系将查找范围缩小一半。数组是存放在连续内存空间上的相同类型数据的集合,数组的在内存空间的地址是连续的;今天首先是要了解一下。

2024-01-24 18:53:31 983 2

空空如也

空空如也

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

TA关注的人

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