专栏名称: 程序猿
本微信公众号:imkuqin,为程序员提供最新最全的编程学习资料的查询。目前已经开通PHP、C/C++函数库、.NET Framework类库、J2SE API查询功能。
目录
相关文章推荐
程序员的那些事  ·  腾讯居然还自研了 Git 客户端,也是没想到… ·  2 天前  
程序猿  ·  你们运维就是这样干活的? ·  3 天前  
码农翻身  ·  漫画 | 兄弟,今晚又得熬个通宵了! ·  3 天前  
码农翻身  ·  48岁了,终于成为了一名游戏开发者! ·  4 天前  
程序员小灰  ·  中国四大软件外包公司 ·  6 天前  
51好读  ›  专栏  ›  程序猿

国内有哪些好的刷题网站?

程序猿  · 公众号  · 程序员  · 2016-09-22 22:50

正文

来自:知乎

链接:https://www.zhihu.com/question/25574458(点击尾部阅读原文前往)


本人现在正在学习数据结构与算法,想通过刷题练习一下分析问题,解决问题的能力。请问国内有哪些好的刷题网站?


CoderAfterWork靠写代码挣钱去浪...

刷题也就这么点地方


1、Leetcode


鼎鼎大名的Leetcode,据不完全统计在上面被刷过的题可以围绕地球三圈。(没说赤道哈,就是这么严谨。)总之,很多国内外的码农在上面刷题。难度从easy到hard都有,而且覆盖面极广。现在还增加了数据库和shell,相匹配的论坛也可以多看看。很锻炼和国外码农沟通的能力,对于以后去混Github也有好处。


特点:各种语言支持很广泛,题型覆盖很广,测试数据集较弱。


2、Codility


同样一家著名的国外刷题网站。和Leetcode不同,它是专门帮各大软件公司笔试用的,只是副业提供了一些面试题和挑战。但即使是训练模式都非常经典,很值得一做。而且测试数据集提供的非常完善,总能让你有想不到的边界情况。Take our free programming lessons


特点:很接近面试题的风格,训练模式也基本够用。


3、Lintcode


可以称作中文版本的Leetcode,个人感觉最高难度比Leetcode高一些。这两个类似的网站,可以配套来刷。每个刷一遍,也能保持新鲜感。


特点:中文支持很好,和Leetcode有一部分题类似,可以和九章算法课程配合使用。


4、Hihocoder


来自于原北京大学POJ开发团队,网站一直在进步。最早是微软的在线笔试网站,现在网易也使用它进行在线笔试。题目侧重于较难题目,风格很像ACM比赛,要自己注意数据集的输入输出。


特点:每周一道算法题极难又有趣,可以用来扩展面试题思路。而且是网易、微软的在线笔试网站,有机会需要多练习。


5、CC150


这不是网站,这是一本书。全称Cracking the coding interview,是国外找工作的神书,而且的确写的很好。里面除了算法题,还有计算机基础知识等内容,很不错。适合想去外企的人仔细阅读,而且最新版已经比150题多了。总之,外企必备!


特点:外企必备!外企必备!外企必备!想去外企的人,多看看书的配套答案也是好的


结论:


最后,经过公众号作者小分队的讨论,根据不同方向的工作,我们建议按照以下方式刷题:


国企、银行、科研单位

Leetcode简单、中等难度最好刷一遍,有时间再过一遍思路。


创业公司

Leetcode全部难度上机刷一遍,然后把不会的题纸上在重新写一下。

国内互联网


Leetcode全部难度上机刷一遍,纸上再写一遍。同时尽量涉及难度较高的平台(Codility),或者多去几家公司面试,以赛代练。


国内外企

Leetcode至少全难度刷一遍,CC150纸上写一遍。想提高Microsoft/Google等在线笔试通过率的,多去玩玩Hihocoder等在线笔试平台。


外企总部

Leetcode困难程度烂熟于心,尽量达到ACM入门标准,甚至稍高一点比较有把握。


作者微信公众号:



Luau LawrenceData Mining 弱鸡 / PhD@NTU

- Welcome To PKU JudgeOnline 北京大学的Online Judge。POJ上面的题目有点老了,但好处是做的人多,经典算法题多,解题报告也多,适合上手。


- ZOJ :: Home 浙江大学的Online Judge。ZOJ用的不多,但为数不多的几次体验好像都还可以,值得尝试。


- Welcome to Hangzhou Dianzi University Online Judge 杭州电子科技大学的OJ。杭电OJ在近几年取代了POJ,成为是目前国内最主流的OJ。它的题目丰富,难度梯度合理,广受全国各大高校的青睐。每年也会有大大小小的比赛挂在杭电的OJ上举办,去年的亚洲区网络赛也是在这上面做的。由此可见其在国内广大ACMer心目中的地位。也正因为如此,网上hdu的解题报告也很多,适合个人进阶训练。


- UVa Online Judge 西班牙Valladolid大学的Online Judge。是最古老也是全世界最知名的Online Judge,题库有详细的分类:如世界总决赛题目,刘汝佳的题目等等。题目目类型非常广泛。绝大部分的题目难度偏易,适合初学者磨练程序设计。


- Timus Online Judge URAL是一个俄罗斯的在线题库。里面的题目相比国内一些OJ来说颇有些难度,我们学校集训队老队员喜欢拿这里的题出给新队员做,可见有一定的进阶作用。


- Sphere Online Judge (SPOJ) SPOJ是波兰最为出色的Online Judge之一,界面和谐,题目类型也非常丰富,适合有一定基础的选手练习,对高手而言也是个提高能力的良好平台。传说君临天下的楼教主刷完了这个OJ?(更正:楼教主刷完的是SGU,感谢 @康Connor 指正)更多介绍见博客:SPOJ简介 - 海山。


- USA Computing Olympiad USACO是美国中学生的官方竞赛网站、美国著名在线题库,专门为信息学竞赛选手准备;做题方式模拟正式比赛,采用标准测评机、文件输入输出、直接提交程序源文件的测评方式;网站的Training题目全面,是学习信息学不可不知的网站,每年NOI,NOIP 都会参考上面的题目;每道题附有详细题解,可查看测试数据和运行结果,便于调试、发现错误并改正。

采用章节递进的层次结构,由易到难,讲授知识、练习编程结合,题目必须依次完成,避免了只挑简单题做的行为;各章节犹如一本竞赛辅导书,形成了一个鲜明的知识结构,利于OI初学者和高手逐步提高水平,充分学习信息学各方面知识,避免偏颇。(来源:usaco_百度百科)


- Saratov State University :: Online Contester 之前上SGU一直是404,所以不敢贴上来。现在亲测能上了就也放上来给大家看看吧。这个是货真价实的楼教主刷完的OJ。楼教主为什么要刷这个OJ而不刷这个回答里的其他OJ呢?因为这个OJ确实适合提升水平,应该跟Ural, SPOJ的难度相当。另外就不太了解了,在我心目中,SGU, Ural, SPOJ都适合区域赛冲金以及毕业想去Google等顶级公司的ACMer/Coder训练,三者区别不大。


- Codeforces Codefores是俄罗斯的一个算法竞赛网站,由 Saratov State University 创办和维护。Codeforces主要强调的是算法竞赛,每隔1个礼拜左右就会有定期的线上比赛举行,其题库也是由每场比赛的题目一场场积累下来的。相比上面几个以题库为核心的OJ,Codeforces的算法竞赛比较适合锻炼自己的临场发挥和压力下编程能力。


- HUSTOJ 华中科技大学的Online Judge。hustOJ也和主流的其他OJ一样有着丰富的题库。但它主要的用处,是它所提供的这么一个叫做vjudge的东西,全称叫做Virtual Judge。通过vjudge,你可以从各大OJ、包括但不限于上述的所有OJ中直接抽取题目,利用这些题目创建一个属于你自己的比赛。非常适合专题训练、日常集训以及小伙伴们一起比赛切题玩。


- LeetCode Online Judge 与很多OJ不同,leetcode是一个主要面向面试者的OJ (LeetCode OJ is a platform for preparing technical coding interviews)。上面的题目不多,目前只有152道,很多都是许多大公司的面试题目。题目类型偏基础,基本不会考察复杂的算法,很多都是对基础知识的应用,难度与topcoder div1 250或codeforces div1 A题难度相当。如果是希望练习编程基础或准备公司面试的话非常推荐此OJ(感谢室友/集训队大神/CMU准硕士 @yun peng 同学提供Leetcode介绍 (1/1/2015更新:室友拿了google的offer不去CMU了))。


- 大视野在线测评·欢迎您 感谢评论区 @秋长泽建议,添加BZOJ。


链接:https://www.zhihu.com/question/25574458(点击尾部阅读原文前往)



本文编号1948,以后想阅读这篇文章直接输入1948即可。

●本文分类“算法搜索分类名可以获得相关文章。

●输入m可以获取到文章目录

本文内容的相关公众号推荐

算法与数据结构

Java编程


更多推荐15个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。