每个题目文件夹包含源码和笔记。其中main.cpp里面包含测试用例,可以直接执行。
├── CMakeLists.txt
├── Leetcode
│ ├── 119_number-of-1-bits
│ │ ├── 119_number-of-1-bits.md
│ │ └── main.cpp
├── README.md
markdown中的一些记号,自动化分类和提示作用
后期用作分类
- #数学:数学问题
- #数组:数组相关
- ★ :重要,说不定能举一反三
- 💡:没想到
- 🐱:巧妙,以后我也这么做
题目名称(难度) | 解题、源码 | 实现方法 |
---|---|---|
1. 两数之和(易) | C++ | 暴力破解✔️、哈希表 |
15. 三数之和(中) | 解题、C++、python | 排序+双指针✔️ |
26. 删除有序数组中的重复项(易) | 解题、C++ | 双指针✔️ |
33. 搜索旋转排序数组 | 解题、C++ | 二分查找✔️ |
34. 在排序数组中查找元素的第一个和最后一个位置 | 解题、C++ | 二分查找✔️ |
36. 有效的数独(中) | 解题、C++ | 一次遍历✔️ |
48. 旋转图像(中) | 解题、C++ | 映射法✔️ |
49. 字母异位词分组(中) | 解题、C++、python | 哈希表✅ |
66. 加一(易) | 解题、C++ | 数组遍历✔️ |
121. 买卖股票的最佳时机(易~中) | 解题、C++ | 一次遍历✔️、暴力法 |
136. 只出现一次的数字(易) | 解题、C++ | 位运算✔️ |
141. 环形链表 | 解题、C++ | hash表✔️、快慢指针✔️ |
189. 旋转数组(中) | 解题、C++ | 使用额外的数组✔️、环状替换 |
283. 移动零(易) | 解题、C++ | 双指针法(i、ii)✔️ |
350. 两个数组的交集 II(易) | 解题、C++ | hash表✔️ |
题目名称(难度) | 解题说明、源码 | 实现的方法 |
---|---|---|
344. 反转字符串(易) | 解题说明、C++ | 双指针✔️ |
7. 整数反转(易) | 解题说明、C++ | 数字法✔️ |
387. 字符串中的第一个唯一字符(易) | 解题说明、C++ | hash表✔️ |
242. 有效的字母异位词(易) | 解题说明、C++ | hash表✔️、排序 |
125. 验证回文串(易) | 解题说明、C++ | 双指针✔️ |
8. 字符串转换整数 (atoi)(中~难) | 解题说明、C++ | 逻辑式✔️、自动机 |
28. 实现 strStr()(易) | 解题说明、C++ | 简单匹配✔️ |
38. 外观数列(中) | 解题说明、C++ | 分治法✔️ |
14. 最长公共前缀(易) | 解题说明、C++ | 纵向扫描✔️ |
题目名称(难度) | 解题、源码 | 实现的方法 |
---|---|---|
2. 两数相加(易~中) | 解题、C++、Python | 模拟法✅ |
237. 删除链表中的节点 | C++ | 与下一个节点交换✔️ |
19. 删除链表的倒数第 N 个结点(中) | 解题、C++ | 栈✔️ |
160. 相交链表(中) | 解题、C++、Python | 哈希集合、双指针✔️ |
328. 奇偶链表(中) | 解题、C++、python | 双指针✅ |
题目名称 | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
5. 最长回文子串(中) | 解题、C++ | 动态规划✅ |
53. 最大子序和 | 解题、C++、Python | 动态规划✔️、分而治之 |
55. 跳跃游戏(中) | 解题、C++、Python | 动态规划(两种思路)✔️ |
122. 买卖股票的最佳时机 II | 解题、C++、python | 动态规划✔️ |
198. 打家劫舍 | 解题、C++、python | 动态规划✔️ |
题目名称 | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
155. 最小栈 | 解题说明、code | 辅助栈✔️ |
384. 打乱数组 | 解题说明、code | 随机抽取✔️、洗牌算法 |
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
13. 罗马数字转整数 | 解题说明、C++ | 模拟法✔️ |
204. 计数质数 | 解题说明、C++ | 枚举法✔️、埃氏筛✔️ |
233. 数字 1 的个数(中~难) | 解题、C++、Python | 枚举法✅ |
326. 3的幂 | 解题说明、C++ | 三进制✔️、对数公式✔️、利用整数限制✔️ |
412. Fizz Buzz | code | 字符串连接✔️ |
题目名称 | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
20. 有效的括号 | 解题说明、c++、python | 栈匹配✔️ |
190. 颠倒二进制位 | 解题说明、code | 逐位颠倒✔️、位运算分治 |
191. 位1的个数 | 解题说明、code | 循环检查✔️、位运算优化✔️ |
缺失数字 | 解题说明、code | 异或运算✔️ |
TreeNode的数据结构在CppUtils和PyUtils的工具包中
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
94. 二叉树的中序遍历(易~中) | C++、python | 递归✅、栈 |
98. 验证二叉搜索树 | 解题、C++ | 利用性质递归✅ |
101. 对称二叉树 | 解题、C++ | 利用性质递归✅ |
102. 二叉树的层序遍历 | 解题、C++ | 队列实现BFS法✅ |
103. 二叉树的锯齿形层序遍历(类似102) | 解题、C++ | 层序遍历✅ |
104. 二叉树的最大深度 | 解题、C++ | 栈实现DFS深度遍历✅ |
108. 将有序数组转换为二叉搜索树(中~难) | 解题、C++ | 递归构建✅ |
116. 填充每个节点的下一个右侧节点指针(类似102) | 解题、C++、python | 层序遍历✅ |
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
200. 岛屿数量(中) | 解题、C++、python | DFS✅、并查集 |
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
17. 电话号码的字母组合(易~中) | 解题、C++、python | 回溯遍历✅ |
22. 括号生成(易~中) | 解题、C++、python | 回溯剪枝✅ |
46. 全排列(易~中) | 解题、C++、python | 回溯剪枝✅ |
79. 单词搜索(中~难) | 解题、C++、python | 回溯剪枝✅ |
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
56. 合并区间(易) | 解题、C++、python | 排序后合并✅ |
74. 搜索二维矩阵 | 解题、C++ | 两次二分查找✅、一次二分查找 |
75. 颜色分类(易) | 解题、C++、python | 双指针✅ |
215. 数组中的第K个最大元素(中) | 解题、C++、python | 基于快速排序的**✅、堆排序✅ |
240. 搜索二维矩阵 II(中) | 解题、C++、python | Z字搜索✅ |
347. 前 K 个高频元素(中) | 解题、C++、python | 堆排序✅ |
题目(难度) | 文件位置(解题、源码) | 实现的方法 |
---|---|---|
334. 递增的三元子序列(中) | 解题、C++、python | 辅助数组✅ |