转载自:九章算法
我打算按照菜鸡-初级-进阶-大神的顺序给大家推荐刷题网站,通通可以白嫖,大家可以根据自己的需求选取合适的学♂习网站噢,绝对不亏!
菜菜子刷题网站对于大一计算机专业的学生来说,怕的不是没有刷题网站,而是刷不通(废话,人家连专业课都没学,你让人家码啥?)。所以要从零开始刷题的话,我先推荐这几个小白也能刷的网站或题集:
核心目的:找到coding的感觉,规范代码写法。
①Programming by Doing
以作业的形式整理的编程基础题,题目相对还是比较简单的。
②新手编程必刷50题
这是LintCode上的一份在线OJ,题目由ACM铜牌选手心编撰。
出题核心在于从基本编程知识点学起,覆盖刷题过程中最常见的算法与数据结构,主要包括基本数据类型、判断语句、数组与循环、字符串与循环、栈与队列、简单递归六大阶段。
刷完这些题目,可以熟悉编码流程,并建立起刷题的信心,刷下来感觉还是不错的。
初阶刷题指南如果前面的内容对你来说过于基础,那么可以来尝试下这里的网站。
核心目的:夯实算法与数据结构知识点,应付简单的面试。
①LintCode
LintCode 收集了网上一些最常见、最高频的大厂面试真题,支持中英双语。
如果你在准备计算机相关面试,在 LintCode 刷题是很有帮助的,它的每道题都有详细的解答,能帮助你更好地理解,你也可以按照算法与数据结构的知识点、按照公司类别刷题,事半功倍。
我喜欢它的一点在于页面整洁干净,没有太多花里胡哨的内容。
②洛谷
洛谷上的题目很多,还有很多的基础题,使用体验很不错。
缺点是筛选方式比较少,也没有相应的阶梯训练,但很适合时间比较充裕的同学。
③牛客网
牛客上也是有算法题库的,按照算法、SQL、shell、前端分类,还有像是公司真题和高频题等,分类比较细致,还可以刷刷面经。
④hihocoder
这个页面也比较直接,而且按照刷题频次排序,个人是比较喜欢这种比较清爽直观的页面的。
⑤LeetCode
LeetCode也是个比较出名的刷题网站了,讨论区人比较多、题目覆盖也比较全面,不过带锁的题目比较多。
进阶刷题之路这个阶段,你应该可以搞定绝大多数的easy题,刷题对你来说已经是种习惯了,这时候核心目的是短时间冲刺。
核心目的:尽可能实现bug free,或是在最短的时间熟悉高频考点,冲刺大厂面试。
①国内外大厂高频真题
我的策略是在面试前刷目标企业的高频题、真题,快速熟悉大厂面试风格,及时查缺补漏。
这套OJ是以公司分类,采取了阶梯训练的方式,一道一道刷过去,也可以体验升级打怪的感觉,刷起来也会比较有趣。
②算法进阶80题
这是前面提到新手刷题的进阶版,覆盖了12个核心知识点,像是二分法、双指针、简单的动态规划等,如果觉得自己水平尚可,可以来刷一下。
③一些实用的刷题技巧
当然,除了刷题网站也要分享一些实用的刷题技巧:
1.刚开始刷题时,每道题给自己20分钟,如果想不出来就直接看答案。
Why?
在面试中面试官根本不可能给你这么多的时间,而且在刷题的阶段,“速通”很重要,注重效率。
2.前期,按照算法与数据结构的知识点刷题;后期,隐藏掉算法与数据结构的标签。
Why?
一开始刷题的时候,可以刷一种类型的题,找到这类题的出题规律。比如二分法的题有什么特征,这种题可以怎么解,但掌握套路以后就不能看着知识点刷,这样容易陷入思维定势,而且在面试中也不会告诉你这道题是考察什么内容。
3.一道题,至少掌握2种解法,最好能掌握3种。
Why ?
一般来说可以掌握标准解法(面试常考、面试官能理解)、最优解(自行钻研、炫技)、暴力解(实在做不出来的时候还有个保守解法)
④辅助的书籍
最后,就推荐两本书吧。
《剑指offer》和《编程之美》,这里也有配套的题集,将白嫖进行到底。
大师-殿堂级如果你想往算法精进下去,而不仅仅局限于算法面试,而是想去打比赛,成为专业的选手(如acm)的话,这些OJ会比较适合你。
①杭电OJ
可以说是国内最有名、应用最广、难度设置最为合理的OJ吧(别杠,杠就是你对)。由于很多比赛都会在上面举办,因此它也是众多大佬刷题和打比赛训练的首选,虽说页面略有点朴素,但谁让它人气高呢?
②UVa Online Judge:西班牙Valladolid大学的Online Judge,最古老也是全世界最知名的Online Judge,题库有详细的分类,题目类型非常广泛。最重要的是,题目类型属于中等,比较适合初学者刷题学习。
③北大OJ:同样是国内口碑较好,而且比较经典的OJ了。题目难度不算高,打开速度很快,适合大佬们在此切磋学习~
④Codechef
一个印度的OJ,相对于其他的刷题网站,这个网站的特点是有更多的比赛题。
最后,祝各位都能找准自己的定位!无论你将来想从事何种行业,想去什么公司,找到自己的方向最重要。不要觉得自己不行,不试一试怎么知道呢?
莫负年少好时光,现在就是最好的时候。