- 博客(21)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 力扣热100 滑动窗口
给定两个字符串 s和p,找到 s 中所有 p 的异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。
2024-07-01 21:07:32
419
原创 力扣热100 哈希
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以按任意顺序返回答案。:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。输入:nums = [2,7,11,15], target = 9。
2024-07-01 20:31:57
546
原创 代码随想录 day19:第七章 回溯算法part01
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。回溯函数也就是递归函数,指的都是一个函数。虽然回溯法很难,很不好理解,但是回溯法并不是什么高效的算法。因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。
2024-06-24 23:03:28
369
原创 代码随想录 day18:第六章 二叉树 part08
第六章 二叉树part08669. 修剪二叉搜索树108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树)669. 修剪二叉搜索树108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树
2024-06-24 22:46:34
211
原创 代码随想录 day17:第六章 二叉树 part07
第六章 二叉树part07235. 二叉搜索树的最近公共祖先701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点)235. 二叉搜索树的最近公共祖先相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点
2024-06-24 22:45:24
149
原创 代码随想录 day16:第六章 二叉树 part06
第六章 二叉树part06530.二叉搜索树的最小绝对差501.二叉搜索树中的众数236. 二叉树的最近公共祖先)530.二叉搜索树的最小绝对差需要领悟一下二叉树遍历上双指针操作,优先掌握递归501.二叉搜索树中的众数和 530差不多双指针思路,不过这里涉及到一个很巧妙的代码技巧。236. 二叉树的最近公共祖先比较难的,可以先看视频讲解
2024-06-24 22:44:11
183
原创 代码随想录 day15:第六章 二叉树 part05
第六章 二叉树 part05654.最大二叉树617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树654.最大二叉树为什么构造二叉树都是前序遍历617.合并二叉树700.二叉搜索树中的搜索98.验证二叉搜索树遇到搜索树,一定想着中序遍历,这样才能利用上特性。
2024-06-24 22:42:23
457
原创 代码随想录 day14:第六章 二叉树 part04
第六章 二叉树 part04找树左下角的值路径总和从中序与后序遍历序列构造二叉树找树左下角的值本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下路径总和涉及到回溯的过程,而且回溯的过程隐藏的还挺深路径总和,和 113. 路径总和ii 一起做了。 优先掌握递归法。从中序与后序遍历序列构造二叉树106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的
2024-06-22 17:30:10
140
原创 代码随想录 day13:第六章 二叉树 part03
第六章 二叉树 part03110.平衡二叉树 (优先掌握递归)257. 二叉树的所有路径 (优先掌握递归)404.左叶子之和 (优先掌握递归)222.完全二叉树的节点个数(优先掌握递归)110.平衡二叉树 (优先掌握递归)再一次涉及到,什么是高度,什么是深度257. 二叉树的所有路径 (优先掌握递归)404.左叶子之和 (优先掌握递归)搞清楚什么是左叶子,剩下的就是二叉树的基本操作。222.完全二叉树的节点个数(优先掌握递归)需要了解,普通二叉树 怎么求,完全二叉树又怎么求
2024-06-22 17:26:56
206
原创 代码随想录 day11:第六章 二叉树part01
递归遍历(必须掌握)递归三要素:确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定单层递归的逻辑: 确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。
2024-06-20 23:22:41
615
原创 代码随想录 day9:第五章 栈与队列part01
在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fc8a7fc081a14739b28042a51826d0aa.png。
2024-06-18 20:58:32
474
原创 代码随想录 day8:第四章 字符串part02
题目:给你一个字符串 s ,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。思路:卡码网:55.右旋转字符串459.重复的子字符串KMP算法的一个应用,较难,二刷的时候再看
2024-06-17 23:36:42
355
原创 代码随想录 day7:第四章 字符串part01
题目:给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。题目:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。输入字符串以字符数组 s 的形式给出。
2024-06-17 22:51:29
943
原创 代码随想录 day6:第三章 哈希表part02
第三章 哈希表part02454.四数相加II383. 赎金信15. 三数之和18. 四数之和总结454.四数相加II使用map思路:首先定义一个unordered_map,key放a和b两数之和,value放a和b两数之和出现的次数。遍历大A和大B数组,两个数组元素和,以及显示的,在地图中。定义int变量count,用来统计a+b+c+d = 0的出现的次数。再遍历大C和大D数组,找到如果0-(c+d)在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出
2024-06-16 23:17:55
180
原创 代码随想录 day5:第三章 哈希表part01
只需要初始化这个学校里学生的名字都存在哈希表里,在查询的时候通过索引直接就可以知道这位同学不在这所学校里。但是哈希法也是牺牲了空间换取时间,因为我们要使用额外的数组,集合或者map来存放数据,才能实现快速的查找。哈希函数:把名字转化为数值,一般hashcode是通过特定编码方式,可以将其他数据格式转化为不同的数值,这样就把学生名字映射为哈希表上的索引数字了。什么时候用哈希法,当遇到要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。哈希表是依据关键字算法而产生的,而数据结构则是哈希表的核心。
2024-06-16 23:06:30
771
原创 代码随想录 day4:第二章 链表part02
什么时候使用虚拟头结点,什么时候不用虚拟头结点。一般涉及到增删改操作,用虚拟头结点都会方便很多, 如果只能查的话,用不用虚拟头结点都差不多。也可以方便记忆,统一都用虚拟头结点。链表的种类为:单链表,双链表,循环链表链表的存储方式:链表的节点在内存中是分散存储的,通过指针放在一起。链表流量进行增删改查。虚拟头节点:链表的一大问题就是操作当前节点必须要找前一个节点才能操作。这个操作捕获了头结点的尴尬,因为头结点没有前一个节点。每次分组情况都要单独处理,所以使用虚拟分组的技巧,就可以统一这种技巧。
2024-06-16 21:45:15
1023
原创 代码随想录 day3:第二章 链表part01
如图所示:之前链表的头节点是元素1, 反转之后头结点就是元素5 ,这里并没有添加或者删除节点,仅仅是改变next指针的方向。
2024-06-15 21:33:26
973
原创 代码随想录 day2:第一章 数组part02
思路:由于数组平方之后,两边较大,中间较小,设置左右指针,边比较谁大,边放入result中(中间肯定比两边小)。总是把更大的数放入result中,最后result是从大到小排列,将其倒序即可。209.长度最小的子数组思路: 滑动窗口,双指针;前缀和双指针的应用场景:单调性,前缀和。思路: 循环不变量,一圈一圈循环;不变量是对每条边的处理规则。
2024-06-14 22:16:18
482
原创 代码随想录 day1:第一章 数组part01
2. if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle,即:下一个查询区间不会去比较nums[middle]2. if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1。
2024-06-12 21:30:29
586
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人