LeetCode作为一种资源,不得不说,是迄今为止用来改进面试式算法问题最有效的工具。 LeetCode收录了许多互联网公司的算法题目,被称为刷题神器。它扫遍全球,囊括中外,成为大家面试算法工程师以及程序员相关工作必刷的题库。
英文版主页:
https://leetcode.com/
中文版主页:
https://leetcode-cn.com/
这篇文章的目的不是教你如何挤进一家顶级互联网科技公司,而是帮助你学习如何获得算法解决问题的技能,而这些技能反过来又会帮助你得到你想要的工作。我们将从一些通用的技巧开始,这些技巧适用于你想做得更好的任何事情:
一般刷题顺序从最容易的到最难的排序。显然你能做的最好的事情就是解决LeetCode上的每一个问题。如果你这样做了,你就真的可以去了。但不幸的是,没有人有无限的时间,所以我们要优化一下。从简单到困难。如果你觉得问题对你来说太简单了,你可以开始跳过这些问题。
虽然LeetCode是一个非常好的平台,但并不是所有的问题质量都是一样的。如果你打开一个问题,你可以看到有多少人赞成或反对一个问题。我一开始会远离那些支持率高于2:1的问题,那些支持率高于4:1的问题通常质量都相当高。从更高级别的问题中学习要容易得多。
最终,你会发现一个太难的问题,你会陷入困境。这完全没问题。事实上,放弃一些问题是完全可以的(甚至是有效的)。它可能需要一种你以前没有见过的算法或数据结构,你没有必要费力去重新发现一种算法或数据结构。这里有一些如何摆脱困境的建议。
首先,如果有已经针对这个问题的篇教学帖,就从那篇开始吧。它们往往是相当高质量的,通常包括编写良好的代码解决方案。接下来,打开问题的“讨论”标签,阅读一些帖子。这些在质量上差别很大:有些人只是发布一个解决方案;其他的则非常详细。您的里程可能会有所不同,但是如果您陷入困境,这也是一个有用的资源。最后,你可以将问题本身谷歌或者百度,通常其他人会在他们的个人博客或Github repo等第三方网站上发布解决方案。
我们介绍一些比较好用的资源: