如何科学的刷LeetCode
很多小伙伴刚开始刷LeetCode时,可能会吃力,经常刷了忘,忘了再刷,进入死循环,刷题效率很差。
其实,刷题也要讲究技巧,掌握了正确的刷题方法,便能事半功倍~
下面分享几点我自己的刷题经验,希望对题主有所启发!
主要有以下3点技巧:
按题目分类来刷。
难度要循序渐进。
做好总结。
按题目分类刷题
LeetCode上面的题目都有进行分类,建议在一个时间段只刷同一类型的题目,可以更全面的认识这一类型的数据结构or算法,以加深对此类题型的理解。就好比练功夫,前期把一些基本招式都熟悉掌握,后面再串通这些招式,融会贯通。
我个人也是比较习惯按照分类来刷题,自我感觉效果还可以。
我将LeetCode题目进行了整理分类,大家可以参考下:
数组操作
LeetCode54 螺旋矩阵
LeetCode76 最小覆盖子串
LeetCode75 颜色分类
LeetCode73 矩阵置零
LeetCode384 打乱数组
LeetCode581 最短无序连续子数组
LeetCode945 使数组唯一的最小增量
链表操作
LeetCode206 反转链表
LeetCode19 删除链表的倒数第N个节点
LeetCode25 k个一组翻转链表
LeetCode141 环形链表
LeetCode142 环形链表Ⅱ
LeetCode61 旋转链表
LeetCode138 复制带随机指针的链表
LeetCode160 相交链表
LeetCode707 设计链表
栈
LeetCode20 有效的括号
LeetCode32 最长有效括号
LeetCode155 最小栈
LeetCode224 基本计算器
LeetCode232 用栈实现队列
LeetCode316 去除重复字母
树的遍历
LeetCode94 二叉树的中序遍历
LeetCode102 二叉树的层次遍历
LeetCode110 平衡二叉树
LeetCode144 二叉树的前序遍历
LeetCode145 二叉树的后序遍历
二叉搜索树
LeetCode98 验证二叉搜索树
LeetCode450 删除二叉搜索树中的节点
LeetCode701 二叉搜索树中的插入操作
递归
LeetCode21 合并两个有序链表
LeetCode101 对称二叉树
LeetCode104 二叉树的最大深度
LeetCode226 翻转二叉树
LeetCode236 二叉树的最近公共祖先
双指针/滑动窗口
LeetCode3 无重复字符的最长子串
LeetCode11 盛最多水的容器
LeetCode15 三数之和
LeetCode16 最接近的三数之和
LeetCode26 删除排序数组中的重复项
LeetCode42 接雨水
LeetCode121 买卖股票的最佳时机
LeetCode209 长度最小的子数组
快慢指针遍历
LeetCode141 环形链表
LeetCode202 快乐数
LeetCode876 链表的中间结点
动态规划
LeetCode5 最长回文子串
LeetCode53 最大子序和
LeetCode62 不同路径
LeetCode64 最小路径和
LeetCode70 爬楼梯
LeetCode118 杨辉三角
LeetCode300 最长上升子序列
LeetCode1143 最长公共子序列
回溯算法
LeetCode10 正则表达式匹配
LeetCode22 括号生成
LeetCode40 组合总和2
LeetCode46 全排列
贪心算法
LeetCode 11. 盛最多水的容器
LeetCode 406. 根据身高重建队列
LeetCode 55. 跳跃游戏
LeetCode 122. 买卖股票的最佳时机 II
LeetCode 309. 最佳买卖股票时机含冷冻期
LeetCode 714. 买卖股票的最佳时机含手续费
并查集
LeetCode200 岛屿的个数
LeetCode547 省份数量
位运算
LeetCode52 N皇后Ⅱ
LeetCode338 比特位计数
LeetCode191 位1的个数
LeetCode231 2的幂
难度要循序渐进
这一点是针对初学者来说的,切记一上来就干hard级别的题目,会让你怀疑人生的。。。
正确的做法是循序渐进,从容易到中等,再过渡到困难级别。不过国内大厂考察算法,一般都是中等难度,困难级别的应该很少考察。
做好总结
多做总结!多做总结!多做总结!
做好总结很重要
虽然总结可能会花费你半个钟甚至更多的时间,但是不总结的话,下次你遇到这个题目,可能会花更多的时间去思考、解答。