
算法笔记
文章平均质量分 72
zstar-_
西电在读硕士生,联系邮箱:[email protected]
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【算法笔记】9.LeetCode-Hot100-二分查找专项
思路:用两次二分查找,第一次找出第一个等于 target 的元素的位置,第二次找出最后一个等于 target 的元素的位置。public:// 查找第一个等于 target 的位置// 记录当前结果,但继续向左找} else {// 查找最后一个等于 target 的位置// 记录当前结果,但继续向右找} else {原创 2025-07-16 00:19:53 · 246 阅读 · 0 评论 -
【算法笔记】8.LeetCode-Hot100-回溯专项
回溯 = “试探 + 撤销”,尝试一条路,如果不通,就“退回去”试别的路。和上题差不多,形式上会更复杂,因为是字符串,需要额外处理。原创 2025-07-14 01:08:05 · 160 阅读 · 0 评论 -
【算法笔记】7.LeetCode-Hot100-图论专项
本来按照 Hot100 的顺序,刷了二叉树,但是由于编辑器糟糕的设计,导致文稿丢失,先写下一节图论。刷题过半,发觉没必要掌握所有方法,只要掌握一种自己能理解的题解思路就可以。很多题解很没意思,纯粹以丧失可读性为代价优化复杂度,不如先找一种能稳定解题的方法再说。原创 2025-07-12 23:59:48 · 430 阅读 · 0 评论 -
【算法笔记】6.LeetCode-Hot100-链表专项
本文开始,不再记录原题,只记录解题思路和 AC 代码,加快进度。原创 2025-07-10 21:25:36 · 644 阅读 · 0 评论 -
【算法笔记】5.LeetCode-Hot100-矩阵专项
思路分析:看到这题,一个朴素的思想是,只要遇到 0 的元素就去查询同行同列,但这样操作搜索的复杂度过高。看题解可以采用一个标记数组,相当于复制一个矩阵,如果遇到有元素为0,就将其行和列标记为true,最后再遍历一次矩阵,对标记的部分置零。原创 2025-07-07 16:45:31 · 517 阅读 · 0 评论 -
【算法笔记】4.LeetCode-Hot100-数组专项
思路分析:这道题求和首先想到用双指针进行遍历枚举,左指针控制循环开始的位置,右指针在左指针的起始位开始向右累计。由于两个循环嵌套,算法复杂度为 O(N2对于数组中的任何位置 j,前缀和 pre[j] 是数组中从第一个元素到第 j 个元素的总和。这意味着如果想知道从元素 i+1 到 j 的子数组的和,你可以用 pre[j] - pre[i] 来计算。用一个 哈希表 来存储每个前缀和出现的次数,可以快速检查某个特定的前缀和是否已经存在,以及它出现了多少次。原创 2025-07-05 18:41:39 · 904 阅读 · 0 评论 -
【算法笔记】3.LeetCode-Hot100-字符串专项
解题思路:第一个想法就用纯暴力的方式去做,挨个元素开始遍历,用unordered_set来去重,maxLen记录每轮循环的最大值。这样需要两个循环,时间复杂度是O(N2这道题官方更推荐采用的思路去做:滑动窗口有点类似于双指针的思路,通过两个指针表示字符串中的某个子串(窗口)的左右边界,左指针从起始位为开始遍历,右指针不断向右拓展,找到集合中无重复的字符就加入窗口范围。下面的例子能够更好地理解滑动窗口的思路:对于字符串abcabcbb暴力解法:i = 0 → 检查 abc → 合法。原创 2025-07-03 20:11:39 · 400 阅读 · 0 评论 -
【算法笔记】2.LeetCode-Hot100-双指针专项
暴力解法:从头开始遍历,如果遇到非零元素,将其交换到末尾。时间复杂度: O(n2空间复杂度:O(1)更好的解法:使用双指针的思路,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。时间复杂度: O(n);空间复杂度:O(1)原创 2025-06-29 00:36:57 · 809 阅读 · 0 评论 -
【算法笔记】1.LeetCode-Hot100-哈希专项
在刷题过程中,发现各种题解千奇百怪,不同的人有不同的代码风格。因此,有必要以一种统一的风格来记录题解,同时记录在刷题过程中的思考。原创 2025-06-27 00:40:15 · 399 阅读 · 0 评论