LeetCode 刷题记录¶
没有必要把全部的题目都刷一次,主要是覆盖全部的知识点,以及知识点的深度。
横向的扩展练习熟练度,纵向的扩展提升能力。
算法难度分类¶
- 入门:可以默写出来,熟练掌握算法
- 简单:可以写出主要思路,熟练掌握算法
- 中等:可以看一下解析,然后把思路写出来,算法基本能看懂
- 困难:不能想出解法,看解似懂非懂,这个算法点不会,需要继续学习
简单算法:四则运算,数组,字符串
中等算法:基础数学,链表,队列,栈,树,二叉树,图,DFS,BFS,滑动窗口,原地算法,回溯算法,一般动态规划
复杂算法:复杂动态规划,很偏的数学(卡特兰数)
数据统计¶
目标¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 |
|---|---|---|---|---|---|---|
| 目标 | 90 | 85 | 79 | 56 | 310 | 1000 |
2019年¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 |
|---|---|---|---|---|---|---|
| 2019-11-07 | 16 | 15 | 0 | 0 | 31 | 50 |
| 2019-11-29 | 24 | 23 | 14 | 21 | 72 | 70 |
| 2019-12-14 | 29 | 29 | 14 | 23 | 95 | 100 |
2020年¶
冬季大量时间学习算法,所以刷题较多,提升较多
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 |
|---|---|---|---|---|---|---|
| 2020-10-15 | 28 | 28 | 11 | 19 | 86 | 120 |
| 2020-10-29 | 29 | 29 | 11 | 19 | 88 | 122 |
| 2020-10-31 | 30 | 29 | 19 | 19 | 97 | 127 |
| 2020-11-02 | 31 | 30 | 19 | 19 | 99 | 140 |
| 2020-11-03 | 32 | 30 | 19 | 19 | 100 | 143 |
| 2020-11-07 | 33 | 30 | 19 | 19 | 101 | 150 |
| 2020-11-12 | 34 | 31 | 25 | 19 | 109 | 165 |
| 2020-11-13 | 35 | 31 | 27 | 19 | 112 | 170 |
| 2020-11-14 | 35 | 32 | 27 | 19 | 113 | 175 |
| 2020-11-17 | 36 | 32 | 27 | 19 | 114 | 185 |
| 2020-11-18 | 37 | 33 | 29 | 19 | 118 | 197 |
| 2020-11-19 | 37 | 33 | 29 | 19 | 118 | 200 |
| 2020-11-26 | 38 | 33 | 29 | 19 | 119 | 204 |
| 2020-12-01 | 39 | 34 | 29 | 20 | 122 | 220 |
| 2020-12-01 | 40 | 35 | 31 | 20 | 126 | 227 |
| 2020-12-07 | 42 | 35 | 31 | 20 | 128 | 245 |
| 2020-12-08 | 44 | 36 | 31 | 20 | 131 | 265 |
| 2020-12-10 | 45 | 36 | 35 | 20 | 136 | 280 |
| 2020-12-11 | 46 | 36 | 41 | 20 | 144 | 289 |
| 2020-12-13 | 47 | 37 | 41 | 20 | 146 | 300 |
| 2020-12-17 | 48 | 37 | 44 | 20 | 150 | 314 |
| 2020-12-18 | 49 | 38 | 45 | 22 | 155 | 330 |
| 2020-12-23 | 50 | 39 | 49 | 22 | 160 | 350 |
| 2020-12-27 | 52 | 39 | 53 | 22 | 166 | 368 |
| 2020-12-31 | 53 | 39 | 54 | 22 | 168 | 381 |
2021年¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 |
|---|---|---|---|---|---|---|
| 2021-01-03 | 54 | 40 | 55 | 22 | 171 | 400 |
| 2021-01-23 | 55 | 41 | 56 | 21 | 173 | 407 |
| 2021-02-03 | 55 | 42 | 56 | 21 | 174 | 431 |
| 2021-04-18 | 56 | 41 | 55 | 21 | 173 | 451 |
| 2021-05-29 | 57 | 42 | 54 | 20 | 173 | 475 |
| 2021-06-19 | 58 | 42 | 54 | 20 | 174 | 487 |
| 2021-06-23 | 58 | 43 | 54 | 20 | 174 | 488 |
| 2021-09-11 | 48 | 42 | 49 | 19 | 158 | 510 |
| 2021-12-31 | 48 | 41 | 48 | 19 | 156 | 533 |
2022年¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 |
|---|---|---|---|---|---|---|
| 2022-02 | 49 | 42 | 49 | 19 | 159 | 568 |
| 2022-04 | 49 | 42 | 47 | 29 | 167 | 596 |
| 2022-05 | 49 | 43 | 48 | 29 | 169 | 611 |
| 2022-06 | 50 | 43 | 47 | 29 | 169 | 640 |
| 2022-12 | 49 | 42 | 46 | 29 | 166 | 665 |
2023年¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 | 简单 | 中等 | 困难 |
|---|---|---|---|---|---|---|---|---|---|
| 2023-02 | 48 | 42 | 46 | 29 | 165 | 673 | 445 | 209 | 19 |
| 2023-03 | 49 | 42 | 46 | 29 | 166 | 680 | 445 | 216 | 19 |
| 2023-04 | 49 | 43 | 46 | 29 | 167 | 695 | 454 | 222 | 19 |
| 2023-10 | 48 | 42 | 46 | 28 | 164 | 724 | 478 | 228 | 18 |
2024年¶
| 时间 | 数据结构 | 算法 | 设计 | 基础架构 | 总分 | 完成数量 | 简单 | 中等 | 困难 |
|---|---|---|---|---|---|---|---|---|---|
| 2024-02 | 48 | 42 | 46 | 27 | 163 | 747 | 482 | 245 | 20 |
说明:如果有一段时间没有练习,可能新增了很多题目,可能其他人超过了自己,所以有的分数会下降。
2022 记录¶
1月¶
- 0096 困难,不同的二叉搜索树,动态规划或者卡特兰数,有难度
- 0021 简单,合并两个升序的链表,两个链表迭代
- 0190 特殊,位运算
- 0082 中等,删除排序列表中的重复的元素
- 0142 简单,循环链表找出重复值
- 1652 中等,分治算法+滑动窗口
- 1790 入门,遍历两个字符串,找到不同的元素,双索引比较即可
- 1791 入门,数组获取指定索引的元素
- 1800 入门,数组获取最大值,循环数组
- 1941 入门,遍历字符串,记录出现的次数
- 1945 简单,字符串和数字的转换,递归计算
- 1967 入门,字符串遍历子字符串
- 2047 中等,字符串句子中有效的单词数(各种边缘情况比较多)
- 2062 中等,判断字符串中的元音子字符串个数(正则表达式+循环数组)
- 2094 入门,循环数组,数组排序
- 2099 入门,循环数组
- 1952 简单,三除数,遍历数组求质数,数学算法
- 2103 入门,遍历数组,对象存储是否出现
- 2108 入门,判断数组中出现的第一个回文字符串
- 2114 入门,遍历数组,判断字符串中空格的个数
- 2119 入门,数学计算
- 2124 入门,判断字符串中字符的位置
- 2129 入门,字符串和数组转换,切换大小写
- 2022 入门,将数组转换成矩阵,数组循环剪切
- 2027 入门,循环字符串
- 2032 入门,三个数组之间求交集,对三个交集求并集并去重
- 2037 入门,数组排序
- 2042 入门,字符串和数组转换,比较数字
- 2053 入门,循环数组
- 2057 入门,循环数组求余数
- 2068 简单,遍历两个字符串并获取出现次数,比较次数多少
- 2078 简单,数组双重循环求最值
- 2089 简单,数组的排序和循环
- 2133 入门,遍历矩阵,判断横向和纵向元素是否有重复
- 2138 入门,字符串剪切和计数
2月¶
完成算法文档
10个算法文档介绍
4月(比较难,都是核心题目)¶
一部分是动态规划,一部分是二叉树的性质和链表的转换
- 0098 困难,验证有效的二叉搜索树(二叉搜索树性质,可以递归比较,或者直接中序遍历结果是升序数组)
- 0102 中等,二叉树的层序遍历(递归遍历节点)
- 0097 困难,交错字符串(动态规划+滚动数组;或者回溯算法+指针+数组)判断一个字符串是否由两个字符串交错形成的
- 0152 困难,乘积最大子数组(动态规划,两个方程)
- 0095 中等,不同的二叉搜索树,遍历树节点
- 0103 困难,二叉树的锯齿状层序遍历(广度优先遍历)
- 0105 中等,从前序和中序遍历中,构造二叉树,关键是二叉树性质的灵活掌握
- 0109 困难,有序列表转换成二叉树(主要是列表和二叉树的数据结构)
- 0114 中等,二叉树转换成链表(二叉树转换成数组,数组转换成链表)
- 0116 简单,二叉树的层序遍历
- 0199 简单,二叉树的右视图(遍历二叉树)
- 0099 困难,恢复二叉搜索树
- 0133 中等,克隆图(克隆节点时,需要克隆节点的值和节点邻接关系,字典存储)
- 0143 中等,重排列表(双指针)
- 0164 困难,最大间距,基数排序或者桶排序
- 0040 困难,组合求和,回溯算法中剪枝
- 0005 困难,最长回文字符串,性能不好
- 0024 中等,交换链表中的节点
- 0148 中等,链表排序(并归排序)
- 0297 简单,二叉树的序列化和反序列化(二叉树和字符串的转换)
- 0128 中等,最长连续序列
- 0084 困难,计算给定柱状图的面积(单调栈)
- 0139 困难,动态规划、广度优先遍历、字典树
- 0060 困难,现在方法不好,排列序列
- 0318 特殊,位运算,最大单词长度乘积
- 0194 特殊,bash
- 0166 中等,分数到小数,主要是两数字相除,结果不会是无限不循环小数;
- 2148 入门,数组循环去重
5月¶
- 0010 困难,正则表达式匹配,矩阵动态规划
- 0089 中等,各类编码,位运算
- 0198 中等,打家劫舍,动态规划
- 0455 简单,数组排序,贪心算法,双指针(双数组)
- 2144 入门,数组排序和循环
- 2154 简单,循环数组中出现的元素
- 2160 简单,找到一个四位数字中的两个最大值
- 2164 简单,数组排序和合并
- 2169 简单,辗转反侧求变成0的次数
- 2176 入门 数组双重循环 数组去重
- 2180 入门 循环数字,获取满足条件的数字
- 2190 入门 循环字符串,找到满足条件的项的个数
- 2194 简单,循环双重数组,字符串 charCodeAt(index)
- 2200 简单 数组双重循环
- 2215 入门 两个数组的补给(不重复的部分)
- 2206 入门 循环数组,记录次数
- 2210 入门 计算数组中的波峰和波谷,就是节点的拐点
6月¶
- 2235 入门,加法
- 2236 入门,二叉树加法
- 2185 入门,循环字符串数组
- 2220 入门,循环字符串
- 2224 入门,字符串数字比较
- 2231 入门,数组循环和排序
- 2243 入门,字符串和数字的转换
- 2248 入门,循环矩阵计数
7月¶
- 2255 简单,循环字符串,startsWith
- 2264 入门,循环字符串
- 2315 入门,循环字符串
- 2269 入门,循环字符串的子字符串
- 2273 入门,遍历字符串和数组
- 2278 入门,循环数组
- 2283 入门,循环数字
- 2287 入门,遍历数组和对象
- 2293 入门,数组迭代
- 2303 入门,分段函数
- 2309 简单,字符串循环去重 chasrCodeAt
- 2347 入门,遍历数组,字符串
- 2351 入门,遍历数组
10月¶
- 0279 困难 广度优先遍历+无向图(完全平方数,使用BFS思路求解)
- 0127 困难 广度优先遍历+无向图+递归
- 2295 简单,遍历数组和对象(替换数组的位置)
- 2319 入门,遍历矩阵
- 2325 入门,遍历字符串,找到对象位置
- 2331 入门,遍历布尔二叉树(递归树节点,求和)
- 2335 中等,装满三个杯子的最短次数,函数递归
- 2399 入门,数组循环
- 2404 入门,数组循环+哈希表计数+求最值
12月¶
- 0738 中等,贪心算法(数字中,如果不是递减的,那么这一位减少1,后面全部变成9)
- 0740 中等,动态规划(打家劫舍)+ 哈希表缓存
- 2341 入门,判断数组中数对个数,考察数组循环,对象
- 2469 入门,摄氏度和华氏度温度转换,考察加法
- 更新统计部分 statistics.md