/K-Leetcode

Leetcode practice

Primary LanguageC++

目录结构 File Structure

每个题目文件夹包含源码和笔记。其中main.cpp里面包含测试用例,可以直接执行。

├── CMakeLists.txt
├── Leetcode
│   ├── 119_number-of-1-bits
│   │   ├── 119_number-of-1-bits.md
│   │   └── main.cpp
├── README.md

标记&符号 Tags&Symbols

markdown中的一些记号,自动化分类和提示作用

标记 tags

后期用作分类

  • #数学:数学问题
  • #数组:数组相关

符号 Symbol

  • ★ :重要,说不定能举一反三
  • 💡:没想到
  • 🐱:巧妙,以后我也这么做

分类 Category

数组

题目名称(难度) 解题、源码 实现方法
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 辅助数组✅