Skip to content

erdengk/code-exercise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 

Repository files navigation

算法练习

总体按照 代码随想录 的顺序练习

穿插补充 labuladong的算法小抄左程云 老师的算法课例子和模版以及自己的思考与总结

其余引用也在对应部分给出链接,感谢前辈们的总结使后来者的路更加宽广。

如果您能在我的仓库留下一颗🌟 这是我的荣幸。

个人博客:http://erdengk.top/

本仓库解析特点

目前大多数的算法解析都是动图或者是可控制翻页的ppt,但我本人在使用时感觉到些许不适应(因为不是自己主动思考程序运行过程,是被别人"带"着思考的),个人认为还是自己手动模拟实际的程序运算过程更好理解这个算法(左老师上课总会手动给出例子解析,感觉这种教学方法比较容易理解)。

所以在做题目解析与总结时,会尽量附上例子,并实际模拟其运算过程,然后通过各种用例来完善程序。

毕竟,我只是一个菜鸟,无法像大佬一样,避过所有坑一步AC。

但,我也相信,通过不断的练习与总结,是可以达到大佬的一部分的水平的。

愿吾与诸君共勉

补充

👌 表示已完成,并有相应的总结;

个人在 CSDN 上的算法学习笔记

左老师算法课学习建议

尚未完成,因为生命不息,学习不止,持续更新中...!

已完成的总结

  1. 总结: 你知道二分法的坑吗
  2. 滑动窗口总结 1
  3. 滑动窗口总结 2
  4. 矩阵打印总结
  5. 反转链表总结
  6. 环形链表总结
  7. 环形链表相关问题(解决下面这几个问题)
  8. 总结:nSum 问题重点是去重
  9. 前缀和数组

数组

二分法

移除元素

有序数组的平方

滑动窗口

练习:

注:以下目录整理来自 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🌟

👌 滑动窗口总结 1

👌 滑动窗口总结 2

矩阵的各种遍历、翻转

螺旋矩阵II

这部分的推荐度由我自己评估,仅供参考

题目 推荐度 备注
59. 螺旋矩阵 II 4🌟
54. 螺旋矩阵 5🌟
剑指 Offer 29. 顺时针打印矩阵 4🌟
之字形打印矩阵 5🌟
48. 旋转图像 5🌟

👌 矩阵打印总结

前缀和 - [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/)

👌 【随想录10-番外 】前缀和数组

差分数组

链表

反转链表

👌 反转链表总结

反转链表

👌 环形链表总结

👌 环形链表相关问题(解决下面这几个问题)

  • 如何证明环形链表有环?
  • 为什么双指针一定会在环内相遇?
  • 如果快指针一次走三步是否一定相遇?5步呢?n步呢?
  • 证明一下上一条
  • 为什么此题快慢指针中,快指针比慢指针仅多走一步?为什么这么设置?
  • 如何找到入环节点
  • 证明一下上面方法的正确性

👌 环形链表总结

👌 环形链表相关问题

other

移除链表元素

203. 移除链表元素

删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点

两两交换链表中的节点

24. 两两交换链表中的节点

链表相交

面试题 02.07. 链表相交

回文链表

234. 回文链表

设计链表

707. 设计链表


哈希表

242. 有效的字母异位词

349. 两个数组的交集

202. 快乐数

454. 四数相加 II

1. 两数之和

15. 三数之和

18. 四数之和

383. 赎金信

16. 最接近的三数之和

👌 总结:nSum 问题重点是去重

字符串

翻转相关

344. 反转字符串

541. 反转字符串 II

151. 翻转字符串里的单词

剑指 Offer 58 - II. 左旋转字符串


other

28. 实现 strStr()

剑指 Offer 05. 替换空格

算法类

459. 重复的子字符串

双指针法

27. 移除元素

344. 反转字符串

剑指 Offer 05. 替换空格

151. 翻转字符串里的单词

206. 反转链表

19. 删除链表的倒数第 N 个结点

面试题 02.07. 链表相交

142. 环形链表 II

15. 三数之和

18. 四数之和


二叉树

层序遍历

117. 填充每个节点的下一个右侧节点指针 II

回溯、递归

257. 二叉树的所有路径

回溯算法

组合问题

待选组合无重复元素

77. 组合

216. 组合总和 III

17. 电话号码的字母组合


待选组合无重复元素,但可以多次选取同样的元素

39. 组合总和


待选组合有重复元素,且待选元素只可以被使用一次

40. 组合总和 II


:okhard: 集合问题总结

分割问题

子集问题

排列问题

棋盘问题

other

图论

模版

遍历

拓扑排序

贪心

455. 分发饼干

376. 摆动序列

53. 最大子数组和


1005. K 次取反后最大化的数组和

55. 跳跃游戏

45. 跳跃游戏 II

122. 买卖股票的最佳时机 II


860. 柠檬水找零

406. 根据身高重建队列

134. 加油站

135. 分发糖果


452. 用最少数量的箭引爆气球

435. 无重叠区间

763. 划分字母区间

56. 合并区间


738. 单调递增的数字

714. 买卖股票的最佳时机含手续费

968. 监控二叉树

动态规划

509. 斐波那契数

70. 爬楼梯

746. 使用最小花费爬楼梯


62. 不同路径

63. 不同路径 II

343. 整数拆分

501. 二叉搜索树中的众数


474. 一和零

494. 目标和

518. 零钱兑换 II

377. 组合总和 Ⅳ


198. 打家劫舍

13. 打家劫舍 II

337. 打家劫舍 III


121. 买卖股票的最佳时机

122. 买卖股票的最佳时机 II

123. 买卖股票的最佳时机 III

188. 买卖股票的最佳时机 IV

309. 最佳买卖股票时机含冷冻期

714. 买卖股票的最佳时机含手续费

简单动态

暴力到动态规划

经典题

单调栈

739. 每日温度

496. 下一个更大元素 I

503. 下一个更大元素 II

42. 接雨水

84. 柱状图中最大的矩形

Releases

No releases published

Packages

No packages published