前言
如果你是使用 C++
来刷力扣题的话,可以在代码最前面加上以下代码内容:
1 2 3 4 5
| auto init = [](){ ios::sync_with_stdio(false); cin.tie(nullptr); return 0; }();
|
这样相当于力扣版的快读,在数据量较大时可以显著减少运行时间。
每一个题要做到 执行用时分布 超过 90%
的人,才算合格。

关于本文章所列出的题目,我给的建议是,从头到尾,每天练习至少两道题目。面对一个不会做的题,先自己思考至少
10
分钟,再尝试去看答案。看答案应该是看思路,然后再自己用代码实现,这样才最有效果。
后文中的每个题都有由我自己编写的简单题解与代码。
数组+数学
1523.
在区间范围内统计奇数数目 - 力扣(LeetCode)
1491.
去掉最低工资和最高工资后的工资平均值 - 力扣(LeetCode)
1281.
整数的各位积和之差 - 力扣(LeetCode)
1822. 数组元素积的符号 -
力扣(LeetCode)
896. 单调数列 - 力扣(LeetCode)
121. 买卖股票的最佳时机 -
力扣(LeetCode)
二维数组+数学
1672. 最富有客户的资产总量 -
力扣(LeetCode)
1572.
矩阵对角线元素的和 - 力扣(LeetCode)
数组+计数法或散列表
169.
多数元素 - 力扣(LeetCode)
41.
缺失的第一个正数 - 力扣(LeetCode)
387.
字符串中的第一个唯一字符 - 力扣(LeetCode)
953.
验证外星语词典 - 力扣(LeetCode)
242.
有效的字母异位词 - 力扣(LeetCode)
389.
找不同 - 力扣(LeetCode)
数组+指针
58.
最后一个单词的长度 - 力扣(LeetCode)
1768.
交替合并字符串 - 力扣(LeetCode)
数组+双指针
283.
移动零 - 力扣(LeetCode)
88.
合并两个有序数组 - 力扣(LeetCode)
75.
颜色分类 - 力扣(LeetCode)
189.
轮转数组 - 力扣(LeetCode)
344.
反转字符串 - 力扣(LeetCode)
11.
盛最多水的容器 - 力扣(LeetCode)
643.
子数组最大平均数 I - 力扣(LeetCode)
567.
字符串的排列 - 力扣(LeetCode)
3.
无重复字符的最长子串 - 力扣(LeetCode)
632.
最小区间 - 力扣(LeetCode)
二维数组+指针
(偏向于模拟,不喜欢这类题可跳过)
48.
旋转图像 - 力扣(LeetCode)
54.
螺旋矩阵 - 力扣(LeetCode)
栈
20.
有效的括号 - 力扣(LeetCode)
150.
逆波兰表达式求值 - 力扣(LeetCode)
链表
(链表的题都比较典型,多练练下面几道就能应对几乎所有的链表题了)
19.
删除链表的倒数第 N 个结点 - 力扣(LeetCode)
160.
相交链表 - 力扣(LeetCode)
83.
删除排序链表中的重复元素 - 力扣(LeetCode)
203.
移除链表元素 - 力扣(LeetCode)
61.
旋转链表 - 力扣(LeetCode)
148.
排序链表 - 力扣(LeetCode)
206.
反转链表 - 力扣(LeetCode) (链表转置,数据结构链表部分典题)
92.
反转链表 II - 力扣(LeetCode)
141.
环形链表 - 力扣(LeetCode)
142.
环形链表 II - 力扣(LeetCode)
21.
合并两个有序链表 - 力扣(LeetCode)
24.
两两交换链表中的节点 - 力扣(LeetCode)
876.
链表的中间结点 - 力扣(LeetCode)
143.
重排链表 - 力扣(LeetCode)
2.
两数相加 - 力扣(LeetCode)
445.
两数相加 II - 力扣(LeetCode)
二叉树
144.
二叉树的前序遍历 - 力扣(LeetCode)
94.
二叉树的中序遍历 - 力扣(LeetCode)
145.
二叉树的后序遍历 - 力扣(LeetCode)
102.
二叉树的层序遍历 - 力扣(LeetCode)
404.
左叶子之和 - 力扣(LeetCode)
199.
二叉树的右视图 - 力扣(LeetCode)
104.
二叉树的最大深度 - 力扣(LeetCode)
112.
路径总和 - 力扣(LeetCode)
101.
对称二叉树 - 力扣(LeetCode)
226.
翻转二叉树 - 力扣(LeetCode)
103.
二叉树的锯齿形层序遍历 - 力扣(LeetCode)
105.
从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)
98.
验证二叉搜索树 - 力扣(LeetCode)
230.
二叉搜索树中第 K 小的元素 - 力扣(LeetCode)
二分查找
704.
二分查找 - 力扣(LeetCode)
374.
猜数字大小 - 力扣(LeetCode)
35.
搜索插入位置 - 力扣(LeetCode)
852.
山脉数组的峰顶索引 - 力扣(LeetCode)
34.
在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
33.
搜索旋转排序数组 - 力扣(LeetCode)
153.
寻找旋转排序数组中的最小值 - 力扣(LeetCode)
4.
寻找两个正序数组的中位数 - 力扣(LeetCode)
74.
搜索二维矩阵 - 力扣(LeetCode)
378.
有序矩阵中第 K 小的元素 - 力扣(LeetCode)
排序
912.
排序数组 - 力扣(LeetCode)
215.
数组中的第K个最大元素 - 力扣(LeetCode)
图论
图论这一节将细分成多个具体的小节。
顶点的度
997.
找到小镇的法官 - 力扣(LeetCode)
1557.
可以到达所有点的最少点数目 - 力扣(LeetCode)
深度优先搜索或广度优先搜索
200.
岛屿数量 - 力扣(LeetCode)
695.
岛屿的最大面积 - 力扣(LeetCode)
547.
省份数量 - 力扣(LeetCode)
1376.
通知所有员工所需的时间 - 力扣(LeetCode)
拓扑排序
207.
课程表 - 力扣(LeetCode)
210.
课程表 II - 力扣(LeetCode)