dlxiii / OnlineJugg

各大Online Judge练习

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Online Judge习题笔记

本项目收录了我在各个Online Judge上做的习题以及相关的笔记。目前绝大多数的题目来自于HackerRank和LeetCode。

关于刷题

这里我想多说两句我对刷题的看法。我于本科二年级暑假开始大规模的做题目。相比于从大学一年级甚至初高中就开始训练CS能力的同学来说,这一时间点已经算非常晚了。说来惭愧,之前的很长一段时间里我只注意看书而没有注意做练习。

看书是一件很轻松的事情,看几页之后就可以胸有成竹的与人坐而论道——反正没有人会深究我的基本功。而刷题只有前几道是有滋有味的,后面的题目不是因为重复而感到无聊就是因为困难而感到挫败。

后来我越来越发现逃避做练习就是麻醉自己。有人说刷题不是提高计算机能力的最好方法,过度刷题甚至会误入歧途。我深表同意,但是这是给胖子说要注意饮食的话,而我现在是个营养不良急需暴饮暴食的人。

本项目名中的Jugg指代Judge,Jugg实际上是我最喜欢的DOTA英雄剑圣的原名。剑圣Jugg的游戏配音里有这样一句话:“勤练带来力量。”

最后我想送上我国著名统计学老前辈陈希孺对刷题的一番看法,正是这一段话点醒了我。希望看到这段话的你,特别是本科低年级的你,能有所体会。

笔者在学生时代及其后的几年中,对做习题未给予足够重视。当时误认为做题费时间,不增长新知识,不如多读些书,站得实地。以后试做研究工作,就日渐感到其不良后果,表现到碰到问题办法少,容易钻死胡同,克服难点的能力弱,以致对自己缺乏信心。对许多方法,都似雾里看花,似曾识面,而不能切实掌握和灵活运用。有如十八般兵器,样样都见过,但拿到手里,就使不动或很笨拙。欲以此克敌制胜,自难有成...

从‘打基础’,锻炼技巧和提高能力诸目标看,非做难题不行,这道理正如训练运动员要加大运动量,做高难动作,不然,在训练得过程中舒服了,就别指望出好成绩。何况,对一个有志于在将来搞基础研究的人,日后在研究工作中将碰到的难点,比起这些习题,又要高出若干个数量级。如果现在面对这些习题尚且有畏难情绪,那又怎能指望在日后研究工作中能具备克服更大困难的能力和信心?

...对读者而言,笔者切望这部分(习题解答)是备而不用、备而少用。如碰到一个题一时做不出来,宁肯暂时搁一搁,也不要轻易翻看解答。譬如登山,经过艰苦努力上了峰顶,只有其乐趣和成就感。反之,如在未尽全力之前就任人抬上去,则不惟无益,实足以挫折信心

目录

HackerRank是一个综合性的在线测试网站。习题内容涵盖数据结构、算法、Java、C++、Python、Ruby、SQL、分布式系统、数据库甚至人工智能等等方面。习题从易到难衔接连贯,很容易入门但是很难取得很高的Rank。

LeetCode是一个着重于练习算法和数据结构的OJ,据说刷LeetCode有助于通过北美公司的面试题。LeetCode支持Java、Python、C/C++、JavaScript和Ruby等等主流语言。LeetCode还支持Shell和SQL,但是题目量相对比较少。

以上两个OJ是我比较经常刷的。其他OJ就不放在目录里了。

最后,希望这个项目多多少少可以作为一种参考。

About

各大Online Judge练习


Languages

Language:Java 81.6%Language:Python 11.9%Language:Shell 5.0%Language:Haskell 1.5%