文章目录
刷题无止境,那就让自己快乐一点
刷哪的题
剑指 + lc top100(含高赞题解+评论区) + 20场周赛 + 哪类不会刷哪里的分类题型 + 类似于《labuladong的算法小抄》这样的优秀文章。
建议先刷二叉树,这样对递归和迭代的理解会更深一点。
抱前辈大腿
一个人刷题总是孤单寂寞的,要是大家能够开开心心的把题目刷完,面试成功那该多好。
以下是我收集的一些比较实用的算法资料,推荐给大家看看
根据访问速度,依次排列
Gitee(码云)
GitBook
GitHub
?LeetCode 101:和你一起你轻松刷题(C++)
?力扣刷题模板
视频
竟然会有人在 B站发解题视频!
?LeetCode 官方题解作者之一的 B站账号
(每一场周赛的录播,以及讲解)
没有思路的题目
如果你是新手,一道题,你想了十多分钟都没有一点儿思路,就果断放弃吧。
去看看正确答案,理解之后再自己敲下来,一定要加上完整的注释。
放心,以后还会遇到一样类型的题的。
提交前检查代码
- 检查是否都赋了值
- 函数是否有返回值的要求
- 如果需要返回
list
的函数,不要返回null,应返回new ArrayList<>();
- 同理,如果是需要返回
int[]
的数据,那么就返回new int[0]
- 如果需要返回
- 结合题目给出的示例,脑袋里过一遍代码的逻辑
- 将自己检查处理过的代码跑测试用例
[边界值、错误输入、一般输入] - 如果题目涉及数组,需要时刻记得检查数组的边界
提交后
可以做的更好
如果提交通过以后,分析一下自己算法的时间复杂度和空间复杂度,看看是否可以做的更好。
LeetCode 上的大部分题目都可以在 20行左右完成,尝试不同的算法
在哪儿看题解
- 当然,非常推荐的,有能力阅读英文的可以去英文版的LeetCode上,看看其他很久以前就沉淀下来的答案 。代码比较耐得住打磨。
将 -cn 去掉就可以访问英文版
以下针对LeetCode 中文站(力扣)
- 你可以先看看题解区域,看看官方和精选的题解你能看懂不
- 如果上述官方题解或者精选题解,你都不太懂,可以看看题解左边那个评论区,会有很多对话式的代码讲解
不要试图从题解的代码中理解思路
从代码理解思路虽然比较方便,但是这样的东西很难消化成自己的。只有自己理解了思路,写代码才会得心应手。
如果有条件的话,可以在纸上面打草稿,这样可以将自己的思路记录下来。毕竟,解题思路比题目更重要。
LeetCode的使用技巧
让刷题更方便
一次可以测试多个用例
在用例输入框中,输入多组数据
点击执行,就会把你的所有测试用例都跑一遍。并给出对应的答案
提交上去的代码会保存注释
只要刷题的次数足够多,总能碰到自己曾经做过的题目。
有这样的情况:碰到一道题,只记得自己做过,但是却不记得具体的解法了(此时去翻提交记录,可以看到之前提交中的注释的!)
养成一个良好的注释习惯。这样一来,自己的思路能更加清晰,下次碰到的时候也更容易看懂自己的代码。
写注释要明确几点:
- 写出来的注释是给以后的自己看的,所以尽可能阐述自己的想法,不要图简单
- 不要为了让代码看起来行数很少,而刻意削减注释数目
- <!!! 如果单行注释写的太长,会影响运行时间 示例>
LeetCode的坑爹设定
LeetCode上的一些巨坑无比的设定
代码编辑器的 vim模式无法复制文本
你说写个博客,将自己写好的代码从编辑器里面拷贝出来。 按一个 ctrl+c,怎么都复制不出来,心累。
快捷键冲突
- 如果你习惯了使用 IDE 中的的快捷键,比如说 VSCode 中的 Ctrl + Enter 向下新开一行。如果你在LeetCode的代码框中按下Ctrl + Enter 的话,会将你现在正在编写的代码直接就提交了。
不要特意新注册一个美国站账号,并且去同步
如果你从没有使用过英文版的 leetcode,那么请不要特意去注册一个美国站的账号,并试图在中文版力扣上同步你的数据。
因为,你新建的美国站账号是空的,里边没有任何数据。如果你将美国站的数据同步到力扣上,那么你之前所有的提交记录都会被删除(做的笔记不会删除)数据会全部清空!!!
尝试一点其他的东西
LeetCode中有许多有趣的机制,可以自己好好探索一番
LeetCode 双周赛 和 周赛!!!
都是最新的题目,可以很好的校验自己的学习效果:比赛地址
排版没弄好,有什么建议吗?
关于 leetcode 的注意事项的这篇文章。太零散了,得找个时间好好理理。看到这里的朋友有什么建议吗?