- 博客(29)
- 收藏
- 关注
原创 代码随想录 | Day29 | 2024.01.09 | 回溯05 | 二刷
排列和组合问题都是收集叶子节点,而子集问题则是收集所有节点。今天主要是全排列问题,重点学习下怎么控制树层去重。
2024-01-09 19:26:28
328
原创 代码随想录 | Day15 | 2023.12.26 | 二叉树02
层序遍历也是需要背下来的模板。总之记得要使用队列并且有两层循环。对称二叉树这题可以记住怎么处理左右孩子节点。
2023-12-26 11:32:59
367
原创 代码随想录 | Day14 | 2023.12.26 | 二叉树01
没啥好说的,要能把迭代遍历给背下来。使用栈,前序和后序是一样的,只需要做个反转。中序需要单独使用指针来记录需要处理的节点。
2023-12-26 11:17:48
467
原创 代码随想录 | Day08 | 2023.12.19 | 字符串01
都可以秒杀了。但是要注意第二题精简代码的方法很巧妙。第三题思路很简单,但是要记得处理各种边界情况。
2023-12-19 15:01:37
385
原创 代码随想录 | Day07 | 2023.12.19 | 哈希02
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-12-19 14:52:07
643
原创 代码随想录 | Day04 | 2023.11.09 | 链表02 | 二刷
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-11-09 14:39:03
27
原创 代码随想录 | Day41 | 2023.09.22 | 动规03
开始难以寻找递推式了。第一题模拟递归地模拟拆分的过程很有意思。第二题想到使用动规并不容易。在做题时如果感觉可以根据之前一两项推出当前项不妨试试动规。
2023-09-22 14:13:56
38
原创 代码随想录 | Day39 | 2023.09.21 | 动规02
dp第二天。都是不同路径,经典的dp题目。主要注意下在golang中怎么合理地开辟二维数组。
2023-09-21 11:48:03
215
原创 代码随想录 | Day37 | 2023.09.20 |贪心06+总结
今天题目没啥说的,968暂时跳过。主要是总结这几天的贪心题目,尽管贪心没有啥固定套路。贪心的核心思想在于使用局部最优来推导全局最优。如果发现能有局部最优并且没有反例的时候就能试试贪心。这几天的贪心涉及到求和与考虑范围最大化,可以自己举简单例子推导一下。另外值得一提的是涉及两个维度的题目必须将维度拆分两次处理,考虑好怎么处理才不会影响另外一个维度。重叠区间题目是有套路的,首先先进行排序,然后根据左右边界的关系来写逻辑。编写时要记住怎么写sort.slice函数。
2023-09-21 10:58:31
39
原创 代码随想录 | Day38 | 2023.09.20 | 动态规划01
动态规划第一天。确定dp数组的含义以及下标含义确定公式,必然包含dp数组前几项dp数组初始化确认遍历顺序举例推导dp数组。
2023-09-21 10:16:53
40
原创 代码随想录 | Day36 | 2023.09.19 |贪心05
重叠区间的题目还是比较容易的,符合直觉。第一步先是考虑排序,要熟悉golang的sort.Slice写法。之后根据左右边界的大小讨论重叠与未重叠的情况,再进行内部的逻辑实现。这里的第二道题很有意思,值得研究。
2023-09-19 16:51:30
51
原创 代码随想录 | Day35 | 2023.09.18 | 贪心04
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-09-19 10:28:59
79
原创 代码随想录 | Day29 | 2023.09.07 | 回溯05
学会使用used数组去重,分为全局和函数内两种方式。排列问题需要使用used全局去重并考虑所有叶子节点,可以不用start,第二题使用重复元素的全排列的去重条件要好好研究研究。
2023-09-14 12:22:31
40
1
原创 代码随想录 | Day31 | 2023.09.13 | 贪心01
贪心第一天,没有套路,真难啊。感觉能够从局部最优推导出全局最优且举不出反例的情况就可以试试贪心。
2023-09-14 11:37:43
46
1
原创 代码随想录 | Day32 | 2023.09.13 | 贪心02
贪心的第二天。没啥套路,主要是要想到是否有局部最优导致总体最优的情况。第一道题将利润拆解的思想要记住。后面两道题要用范围去思考,单纯去模拟的话很容易把自己绕晕。
2023-09-13 17:44:51
56
原创 代码随想录 | Day28 | 2023.09.09
复原IP地址是分割回文串的升级版,小细节比较多。区分使用continue和break剪枝的区别。子集问题需要遍历整棵树,而不像组合问题只需要收获叶子节点。所以没有确定的终止条件,并且每层递归时都需要存储path。
2023-09-11 15:22:47
38
原创 代码随想录 | Day27 | 2023.09.06
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-09-09 20:23:05
106
1
原创 代码随想录 | Day25 | 2023.09.05
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-09-09 16:50:30
149
1
原创 代码随想录 | Day24 | 2023.09.04 | 回溯入门
回溯算法的入门。回溯法,一般可以解决如下几种问题:组合问题:N个数里面按一定规则找出k个数的集合切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等本质上是暴力搜索各种可能的组合。一个关键点是如何进行剪枝。回溯法解决的问题都可以抽象为树形结构,因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。
2023-09-09 16:34:28
47
1
原创 代码随想录 | Day21 | 2023.08.15
二叉搜索树可以当作有序的数组来处理,要能够利用好其特性,避免遍历整个二叉树。501中记录多个众数时的清楚操作很关键,需要牢记。在写递归的时候要思考清楚整个递归函数返回的是什么(比如一棵子树),把函数当作一个整体处理。
2023-08-16 16:21:30
41
1
原创 代码随想录 | Day11 | 2023.08.05
碰到与相邻元素匹配的题目首先想到用栈,因为栈能够很好地记录之前访问的元素.今天的题目都不难,注意下怎么处理入栈的第一个元素。
2023-08-07 21:29:11
102
1
原创 代码随想录 | Day10 | 2023.08.04
第一天刷栈和队列的题目,题目不难,但是实现的细节很丰富。算是对于之前栈和队列的复习了。栈实现队列不难,队列实现栈需要注意一个队列就能够实现。其中的Move操作需要仔细研究。
2023-08-04 11:37:56
64
1
原创 代码随想录 | Day 6 | 2023.07.31
这题主要就是学习在Golang中如何写哈希。对于只需要知道元素是否存在而无需关心其值是多少的情况时可以使用struct来节约内存空间。哈希题目的一大难点是知道可以用哈希。这题目想到了使用哈希就好说了。另外官解中for的写法可以学习一下。第一眼都能想到n方的暴力解法,使用hash处理还是挺巧妙的。1. 看到出现循环或者需要判断元素是否出现过时可以使用hash来记录。总的来说这次哈希的题目都不算难,主要是要有使用哈希的意识。这里比较巧妙的是使用特别的判定方式节约了空间。1. 学会使用哈希节省时间。
2023-07-31 20:47:14
81
1
原创 代码随想录 | Day 3 | 2023.07.28
1. 题目不难 但是写一次忘一次 重点在于整理清楚当前节点与前后节点的关系。1. 没啥说的,添加虚拟头节点以统一对链表元素的操作即可。图片来自代码随想录,其中3号节点需要使用temp临时存放。1. 考察对链表基础的理解,重点完成插入功能。2. 要使用临时变量存放当前节点的后继节点。2. 分清楚链表结构体和节点结构体。
2023-07-28 20:54:20
42
1
原创 代码随想录 | Day 2 | 2023.07.27
碰见这种求子数组的题目,首先可以考虑滑动窗口。滑动窗口的一个难点在于如何处理左右指针的相邻元素。但是当sum大于target的时候,此时左指针是有可能向右移动的, 比如 1,1,1,1,100这种序列。所以此时需要固定右指针,左指针不断右移,探索最小长度的情况。1. 使用双指针实现滑动窗口,类似于“虫取法”, 右指针向前探索,左指针维持符合条件的窗口。1. 模拟就行,但是要想清楚边界条件,注意旋转圈数和边长的关系。2. 对每条边采用左闭右开的原则从而保证每条边的处理的是相似的。3. 分奇偶情况讨论。
2023-07-27 20:58:58
51
1
原创 代码随想录 | Day 1 | 2023.07.26
根据区间类型可以划分出两种写法:左闭右闭,左闭右开。要注意判断区间是否合理,比如[1,1]是合理的,但是[1,1)不行。答案的双指针是更简洁高效的做法,其思路是将不需要删除的元素,即不等于val的元素放置在数组的头部,那么[0, left)就包含了需要保留的元素,left就是删除元素后数组的长度。2. 如果当前num不等于val,说明需要保留,将num放在left指针位置,left右移,right继续搜索。1. 设置left和right两个指针,left表示当前需要赋值的位置,right是向右搜索的指针。
2023-07-26 21:44:21
170
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人