- 博客(62)
- 收藏
- 关注
原创 秋招算法备战第42天 | 背包问题(二维、一维)、416. 分割等和子集
这是自己第一次比较系统地学习背包问题,感觉如何识别出一个题目是背包问题是此类题目的重点(笔记末尾总结了如何识别出一个题目是背包问题)
2023-08-12 00:05:45
428
原创 秋招算法备战第38天 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
今天的题目都还比较基础,关键在于要按照动态规划五部曲的思路分析,在方法论的指导下按照步骤解题
2023-08-04 20:06:37
384
原创 秋招算法备战第37天 | 738.单调递增的数字、968.监控二叉树、贪心算法总结
1. 贪心的关键在于如何将问题抽象为局部最优到全局最优的问题,可能通过数据推导就可以发现、也可能需要通过排序等操作使得该方式可行2. 星友总结的贪心算法思维导图很全面
2023-08-04 19:19:14
1483
原创 秋招算法备战第36天 | 435. 无重叠区间、763.划分字母区间、56. 合并区间
无重叠区间问题强调的是选择,通过选择特定区间达到解决问题的目的。划分字母区间问题强调的是统计和划分,通过分析字符出现的位置实现划分。合并区间问题强调的是排序和合并,通过排序来简化合并过程。
2023-08-04 01:12:18
228
原创 秋招算法备战第35天 | 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
“根据身高重建队列”和“用最少数量的箭引爆气球”都是通过排序使得能够通过贪心一次遍历解决问题
2023-08-04 00:48:41
182
原创 秋招算法备战第32天 | 122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
- 📈 买卖股票的最佳时机 II: 通过做差可以得到利润序列,然后只要利润非负数求和即可,没有手续费。- 🏃 跳跃游戏: 使用贪心算法,遍历数组并保持跟踪最远能到达的下标。- 🏃 跳跃游戏 II: 同样是贪心算法,找出到达最后一个下标的最小跳跃次数。保持最大跳跃范围并逐步更新。
2023-07-31 20:52:50
179
原创 秋招算法备战第31天 | 贪心算法理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和
贪心算法是在每一步都采取局部最优解,而动态规划则是在每一步都根据前一步的结果做出决策。
2023-07-30 15:14:26
1291
原创 秋招算法备战第30天 | 332.重新安排行程、51. N皇后、37. 解数独、回溯总结
了解了三个hard题目的解法,并且对回溯的内容进行了全面的复习
2023-07-30 14:36:38
192
原创 秋招算法备战第29天 | 491.递增子序列、46.全排列、47.全排列 II
1. 了解组合与排列的区别,都可以使用回溯,但是参数区别大2. 去重先排序
2023-07-30 13:39:16
204
原创 秋招算法备战第28天 | 93.复原IP地址、78.子集、90.子集II
- [💻 Python] 使用深度优先搜索(DFS)的方法来解决复原 IP 地址问题,逐个位置插入点,检查生成的每一部分是否在 0-255 的范围内,且没有前导零(除非该部分本身就是零)。- [💻 Python] 经典回溯问题,找出集合的所有子集。子集的幂集包含2^n个元素,每个元素可以在子集中出现或不出现。- [💻 Python] 带有重复元素的子集问题,使用"回溯法"算法解决。需要检查添加的子集是否已经在结果中,可以通过排序数组来避免重复。
2023-07-30 13:08:46
241
1
原创 秋招算法备战第25天 | 216.组合总和III、17.电话号码的字母组合
跟着回溯的模板写会比较清晰,其本质就是穷举,所以一般需要在终止和循环处加一些剪枝操作用来减少对不必要情况的处理
2023-07-22 19:32:06
371
原创 秋招算法备战第23天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
构造用前序,普通选后序,搜索选中序
2023-07-22 00:15:10
406
原创 秋招算法备战第22天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
今天的题主要是将结点作为返回值,通过遍历过程中更新左右子树来完成对树的操作
2023-07-21 23:52:01
387
原创 秋招算法备战第21天 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
1. 看到二叉搜索树就要想到中序遍历利用二叉搜索树的性质2. “二叉树的最近公共祖先”的思路要掌握
2023-07-21 00:26:30
476
原创 秋招算法备战第20天 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
1. 递归中记得考虑剪枝来降低某些情况下的时间复杂度2. 在python中,判断是否为None推荐用is和is not
2023-07-18 23:26:12
668
原创 秋招算法备战第18天 | 513.找树左下角的值、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
1. 迭代法的层序遍历中,每层的节点数量在遍历前就是知道的2. 第三题的单层递归逻辑没有理清,还是要按照递归三要素来考虑
2023-07-16 19:53:01
705
原创 秋招算法备战第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和
1. 今天的第一题和第三题涉及到了值从叶子结点往上累积,关键在于终止条件的判断以及遍历顺序的明确2. 今天第二题涉及到了回溯,这里简单回顾一下回溯的模板以及三部曲
2023-07-15 19:26:25
1041
1
原创 秋招算法备战第16天 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数
今天主要是求二叉树深度以及节点个数,一方面要学会利用递归遍历,一方面要熟悉一些特殊二叉树的特性
2023-07-15 18:27:32
971
原创 秋招算法备战第14天 | 二叉树理论基础、递归遍历、迭代遍历、统一迭代
1. 了解了常见的二叉树分类2. 掌握了递归遍历二叉树的方法,基本清楚迭代遍历二叉树的方法,了解统一迭代遍历二叉树的方法
2023-07-12 22:46:50
969
原创 秋招算法备战第13天 | 239. 滑动窗口最大值、347.前 K 个高频元素
1. 需要掌握通过deque实现单调队列的方法2. heapq实现小顶堆的方法需要了解3. 复习了一下快排的内容
2023-07-12 22:18:06
999
原创 秋招算法备战第11天 | 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值
如果涉及到消除就要想到需不需要用栈,在python中栈可以直接用list实现
2023-07-09 16:56:00
1279
原创 秋招算法备战第10天 | 栈与队列理论基础、232.用栈实现队列、225. 用队列实现栈
两个栈可以实现队列,一个双端队列可以实现栈(from collections import deque)
2023-07-09 16:21:38
1301
原创 秋招算法备战第9天 | 28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾
1. KMP的两题也有其他比较优美的解法2. 字符串和双指针的典型例题需要掌握
2023-07-06 21:26:46
1639
原创 秋招算法备战第8天 | 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
今天的题目整体比较简单,比较重要的收获是python的切片操作鲁棒性很强,可以省去很多的条件检查
2023-07-05 11:18:27
1742
原创 秋招算法备战第7天 | 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和、总结
1. set里面添加元素用add2. char-->ascii用ord,ascii-->char用chr3. 命名规范:字典哈希 hashmap;数组哈希 record4. 后两题中的去重是关键,没有具体去写,后面再好好体会
2023-07-04 22:27:53
1830
原创 秋招算法备战第6天 | 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
1. 在Python中,数组、set以及字典均可以用来定义哈希表,数组使用索引长度已知,set适合索引长度未知,dict则有更多的定制化空间2. 要快速判断一个元素是否出现集合里的时候,就要考虑哈希法
2023-07-04 18:31:40
1976
原创 秋招算法备战第4天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、42.环形链表II
1. 快慢指针有很多变体2. 检测链表是否有闭环可以通过快慢指针转换为追击相遇问题
2023-07-02 23:36:37
2232
原创 秋招算法备战第3天 | 链表理论基础、203.移除链表元素、707.设计链表、206.反转链表
完成比完美更重要,时间比较紧张哪怕过一遍视频,甚至仅仅看一下代码都可以,最主要是跟上进度今天链表题对应的coding都还要加强虚拟头结点、双指针(pre and cur)以及衍生出的递归写法都要掌握。
2023-07-01 00:34:10
2420
原创 秋招算法备战第2天 | 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
无穷大可以用float(‘inf’)滑动窗口的更新需要重点复习滑动窗口的更新一般涉及两个步骤:滑动和添加新数据。滑动:滑动窗口的基本操作就是滑动,也就是向前移动一定的步长。通常,这涉及到将窗口中最早的数据移除。(一般涉及到循环,比如while)添加新数据:滑动窗口滑动之后,需要用新数据填补窗口中的空缺。这通常涉及将新数据添加到窗口的末尾。
2023-06-30 11:33:33
2336
原创 秋招算法备战第1天 | 数组理论基础、704. 二分查找、27. 移除元素
万事开头难,打好了头阵,后面继续加油二分法和快慢指针基本还记得,夸夸自己乘以二以及除以二可以用位移运算,乘以二是1。
2023-06-29 00:39:10
2540
原创 代码随想录算法训练营第二十九天 | 491.递增子序列、46.全排列、47.全排列 II
1. 一般来说,组合问题和排列问题是在树形结构的叶子节点上收集结果,而子集问题就是取树上所有节点的结果2. 判断某个元素是否使用过,如果元素范围给定并且比较小,可以定义数据直接用哈希查找3. 去重之前一定要先排序,这样子所有相同的元素就会靠在一起4. 树层修剪和树枝修剪的区别要能够理解
2023-04-18 00:18:14
70
原创 代码随想录算法训练营第二十八天 | 93.复原IP地址、78.子集、90.子集II
按照回溯的三要素去写基本都能比较容易解决,最后一题的去重需要再好好理解下
2023-04-17 00:08:42
60
原创 代码随想录算法训练营第二十七天 | 39. 组合总和、40.组合总和II、131.分割回文串
1. 回溯的模板要记清楚,更新start_index的规则不同题目可能不一样2. 判断两个list是否相同可以用Counter3. 获得倒序的字符串可以使用[::-1]
2023-04-16 00:43:30
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅