code-exercise
code-exercise copied to clipboard
Personal algorithm practice
算法练习
总体按照 代码随想录 的顺序练习
穿插补充 labuladong的算法小抄 、左程云 老师的算法课例子和模版以及自己的思考与总结
其余引用也在对应部分给出链接,感谢前辈们的总结使后来者的路更加宽广。
如果您能在我的仓库留下一颗🌟 这是我的荣幸。
个人博客:http://erdengk.top/
本仓库解析特点
目前大多数的算法解析都是动图或者是可控制翻页的ppt,但我本人在使用时感觉到些许不适应(因为不是自己主动思考程序运行过程,是被别人"带"着思考的),个人认为还是自己手动模拟实际的程序运算过程更好理解这个算法(左老师上课总会手动给出例子解析,感觉这种教学方法比较容易理解)。
所以在做题目解析与总结时,会尽量附上例子,并实际模拟其运算过程,然后通过各种用例来完善程序。
毕竟,我只是一个菜鸟,无法像大佬一样,避过所有坑一步AC。
但,我也相信,通过不断的练习与总结,是可以达到大佬的一部分的水平的。
愿吾与诸君共勉
补充
:ok_hand: 表示已完成,并有相应的总结;
尚未完成,因为生命不息,学习不止,持续更新中...!
已完成的总结
数组
二分法
- 704. 二分查找
- 34. 在排序数组中查找元素的第一个和最后一个位置
- :ok_hand: 总结: 你知道二分法的坑吗
- 仓库代码
有序数组的平方
滑动窗口
练习:
注:以下目录整理来自 wiki 与官方推荐 按推荐顺序排列
easy:
题目 | 题解 | 推荐度 | 备注 |
---|---|---|---|
594. 最长和谐子序列 | 题解 | 4🌟 | |
643. 子数组最大平均数 I | 题解 | 5🌟 |
mid:
题目 | 题解 | 推荐度 | 备注 |
---|---|---|---|
3. 无重复字符的最长子串 | 题解 | 5🌟 | |
187. 重复的DNA序列 | 4🌟 | ||
1423. 可获得的最大点数 | 4🌟 | ||
424. 替换后的最长重复字符 | 4🌟 | ||
438. 找到字符串中所有字母异位词 | 4🌟 | ||
567. 字符串的排列 | 3🌟 | ||
1004. 最大连续1的个数 III | 3🌟 | ||
1052. 爱生气的书店老板 | 3🌟 | ||
1208. 尽可能使字符串相等 | 3🌟 | ||
220. 存在重复元素 III | 3🌟 | ||
1438. 绝对差不超过限制的最长连续子数组 | 3🌟 | ||
1838. 最高频元素的频数 | 3🌟 | ||
904. 水果成篮 (mid) | |||
76. 最小覆盖子串 (hard) | |||
209. 长度最小的子数组 (mid) | 题解 |
hard:
题目 | 题解 | 推荐度 | 备注 |
---|---|---|---|
480. 滑动窗口中位数 | 5🌟 | ||
992. K 个不同整数的子数组 | 4🌟 | ||
1610. 可见点的最大数目 | 4🌟 | ||
30. 串联所有单词的子串 | 2🌟 | ||
632. 最小区间(hard) | ? | ||
862. 和至少为 K 的最短子数组 | 4🌟 |
:ok_hand: 滑动窗口总结 1
:ok_hand: 滑动窗口总结 2
矩阵的各种遍历、翻转
螺旋矩阵II
这部分的推荐度由我自己评估,仅供参考
题目 | 推荐度 | 备注 |
---|---|---|
59. 螺旋矩阵 II | 4🌟 | |
54. 螺旋矩阵 | 5🌟 | |
剑指 Offer 29. 顺时针打印矩阵 | 4🌟 | |
之字形打印矩阵 | 5🌟 | |
48. 旋转图像 | 5🌟 |
:ok_hand: 矩阵打印总结
前缀和
- [303. 区域和检索 - 数组不可变](https://leetcode-cn.com/problems/range-sum-query-immutable/) - [304. 二维区域和检索 - 矩阵不可变](https://leetcode-cn.com/problems/range-sum-query-2d-immutable/) - [560. 和为 K 的子数组](https://leetcode-cn.com/problems/subarray-sum-equals-k/) - [1314. 矩阵区域和](https://leetcode-cn.com/problems/matrix-block-sum/) - [1. 两数之和](https://leetcode-cn.com/problems/two-sum/) - [1248. 统计「优美子数组」](https://leetcode-cn.com/problems/count-number-of-nice-subarrays/):ok_hand: 【随想录10-番外 】前缀和数组
链表
:ok_hand: 反转链表总结
反转链表
:ok_hand: 环形链表总结
:ok_hand: 环形链表相关问题(解决下面这几个问题)
- 如何证明环形链表有环?
- 为什么双指针一定会在环内相遇?
- 如果快指针一次走三步是否一定相遇?5步呢?n步呢?
- 证明一下上一条
- 为什么此题快慢指针中,快指针比慢指针仅多走一步?为什么这么设置?
- 如何找到入环节点
- 证明一下上面方法的正确性
:ok_hand: 环形链表总结
:ok_hand: 环形链表相关问题
other
移除链表元素
删除链表的倒数第 N 个结点
两两交换链表中的节点
链表相交
回文链表
设计链表
哈希表
:ok_hand: 总结:nSum 问题重点是去重
字符串
other
算法类
双指针法
二叉树
层序遍历
回溯、递归
回溯算法
组合问题
待选组合无重复元素,但可以多次选取同样的元素
待选组合有重复元素,且待选元素只可以被使用一次
:okhard: 集合问题总结