文章目录
- LeetCode 的题库使用方式
-
- 做题方式
- 如何做题
- LeetBook
- 竞赛
-
- 竞赛题目难度分布
- 竞赛结果和复盘
- 竞赛目标
LeetCode 的题库使用方式 LeetCode 的题库是很庞大的。面对庞大的题库,只有正确使用才能达到最好的效果。
做题方式 常见的一种做题方式是:按照题号顺序依次做题。这种做题方式并不好,因为 LeetCode 的题目顺序并没有特定含义,既不是按照难度排序,也不是按照知识点排序,如果按照题号顺序做题,则每道题的难度和知识点都没有关联性,做题效果是不好的。
还有一种做题方式是:按照难度从低到高的顺序做题。这种做题方式比上一种做题方式好,但也不是最好的做题方式。前期做的都是难度低的题目,可能都会做,一旦做到难度高的题目就不会做了,这种做题方式没有对专门的知识点进行针对性的练习,效果也不是最好。
什么样的做题方式是最好的呢?做题需要和知识点的学习结合,因此应该一段时间练习特定知识点的题目。LeetCode 有标签功能,每个标签都关联特定的知识点,可以在题库页面按照标签筛选题目,做同一个标签下的题目,就是对同一个知识点的题目进行练习。
如何做题 LeetCode 的题目有不同的难度,难度低的题目可以很快想出解法,提交通过,难度高的题目则可能无法想出时间复杂度足够低的解法,甚至完全没有思路。对于会做和不会做的题目,应该如何做题呢?
对于会做的题目,应该自己写代码实现算法。如果提交通过,则说明实现是正确的。提交正确之后并没有结束,同一道题目可能有多种解法,也可能有更优的解法,因此需要参考其他人的解法。其他人的解法可以在国服的题解区以及世界服的讨论区看到,高票题解通常是质量高的题解。国服的「力扣官方题解」发布的官方题解通常有很大的参考价值,官方题解一定包含复杂度最优的解法。
如果自己写的代码没有提交通过,则应该首先自己排查错误,发现错误原因然后改正,提交通过之后再参考其他人的解法。
如果遇到难题,无法想出时间复杂度足够低的解法,甚至完全没有思路,很多人的做法是死磕到底,花几个小时做一道题。其实,这种做法是非常不可取的,不会做的题目即使想几个小时,也未必就会做,即使想了几个小时之后确实想出了提交通过的解法,也花费了大量时间,想出的解法也未必是最优解法,这样的做题效率是很低的。
正确的做法是,规定一个思考的时间上限,可以是 5 分钟或 10 分钟,最多不超过 15 分钟,如果有思路就写代码实现,如果没有思路,或者发现代码无法提交通过,则不应继续死磕,而是应该直接看题解。看题解的目的是理解题目的解法,为了达到目的,应该首先记忆题解的思路和代码,然后尝试理解,最重要的是过遍数。
LeetBook LeetBook 是 LeetCode 的另一个功能,可通过学习页面进入。
LeetBook 的内容颇为丰富,以数据结构和算法为主,也有别的方面的内容,是很好的学习资源。
对于数据结构和算法,如果没有基础,建议先在 LeetBook 进行学习,然后进入题库页面做题,对知识点有一定了解之后,做题的效果更好。
竞赛 在学习和做题一段时间之后,可以参加竞赛,检验训练的成果。
季赛的平均难度高于主站题目,且一年只有两次,因此参加竞赛应该以周赛和双周赛为主。
竞赛题目难度分布 周赛和双周赛的比赛时长是 90 分钟,包括 4 道题,每道题的难度情况大致如下:
- 第 1 题考查数据结构和算法的基础概念,只要对相应的知识点有所了解即可做出;
- 第 2 题考查数据结构和算法的简单使用,在理解相应的知识点的基础上可以做出;
- 第 3 题考查数据结构和算法的深入理解,有一定难度,要求对相应的知识点有充分的掌握;
- 第 4 题考查数据结构和算法的应用,或综合考查多个知识点,难度一般明显高于前 3 道题。
除了做出的题目数量以外,做题速度也非常关键。在两位选手的得分相同的情况下,用时不同,排名也可能相差几百名,因此,在训练的过程中也要重视做题的熟练度。
在竞赛中取得好成绩需要多方面的因素,除了实力以外,心态也很重要,良好的心态有助于正常发挥,而不好的心态会导致思路受限,轻则用时更多,重则会做的题目未能在竞赛时做出。
在有条件的情况下,应该坚持参加竞赛。即使刚开始参加竞赛时的成绩不理想,随着做题数量的增加和参加竞赛的场次的增加,竞赛成绩也可以提升。
竞赛目标 竞赛的前 3 道题的难度有限,在经过长期的训练之后是可以达到做出前 3 道题的实力的,而第 4 题可能很难,有时候会超过大多数面试的要求,因此,对于大多数人而言,竞赛的目标应该是确保每次都能做出前 3 道题。这个目标可以分解成若干较小的目标:
- 对于初学者,目标为首先做出第 1 题,然后做出前 2 题;
- 对于有一定基础的选手,目标为前 2 题保证时间和正确率,然后做出前 3 题;
- 对于实力较强的选手,目标为前 3 题保证时间和正确率,名次稳定在前 200 名;
- 对于实力更强的选手,目标为前 3 题保证时间和正确率,争取做出第 4 题,名次进入前 100 名。
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 分析COMP122 The Caesar Cipher
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 数据结构与算法|【算法】力扣第 266场周赛
- leetcode|今天开始记录自己的力扣之路
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)