从今天起,我开始进行Java刷题,在掌握一门编程语言的基本用法之后,就要上手解决实际问题了。因此,今天笔记有以下几个部分。
1.为什么要刷题?
2.在哪里刷题?
3.刷题的要点是什么?
4.还需要进行哪些学习?
那么,直接开始回答问题好了。
为什么要刷题?
一方面,实践是检验水平的唯一方法,能不能解决问题,能不能自主地解决Bug,这是关系到编程能力的事情。学习最怕半瓶醋,理论知识看明白了,动手能力没跟上,等于纸上谈兵。
另一方面,刷题也是见识一下实际问题,什么样的问题都有,能充分调动大脑的思考能力,增加知识面。也能在各种刷题网站上看到大牛们对某一问题的处理方式,为什么他们的算法这么简单?为什么代码这么简洁?从中我们能学到许多编程思维和编程习惯,受之启发,化为己用。
还有一方面,我认为是为了保持手感和状态,每天刷几道题,能让状态保持住。
在哪里刷题?
在某乎上搜索,有许多人给出了比较好的刷题网站,我选了几个放进了收藏夹,与大家分享一下。
HackerRank,这个网站可以刷题挣分数,然后有排行,这种方式很适合玩家来打榜。
Leetcode,这个网站的题目量也很多,而且编译速度很快。
GitHub,这个网站大家应该有所耳闻吧,上面能搜到许多公司开源项目的代码,简直是一座宝库。
刷题的要点是什么?
1.先读懂问题,基本上都是英文的题目,问题描述和举例也很清楚,但我们需要注意解题的限制。
2.想出几种解题思路和实现方法,然后再作比较,哪种方法最优。
3.在验证代码无误,结果正确后,再看下官方提供的解答,以及其他答题者的讨论,你从中能收获很多。
4.记录自己做题时出现的编译错误和原因,每天记录并整理,不断地修正后,直至不出现Typing Error这种低级错误。可以使用GitHub来保存每天的刷题题目和内容。
还需要进行哪些学习?
我在HackerRank网站上刷题时,每题分数从5到500分不等,难度也是有Easy,Medium和Hard,Expert这种级别,在高难度题目中,我发现要解决的某个实际问题,许多是涉及数学的算法的,因此,后面我要研究下常用算法和相应的代码实现方式。