從今天起,我開始進行Java刷題,在掌握一門編程語言的基本用法之后,就要上手解決實際問題了。因此,今天筆記有以下幾個部分。
1.為什么要刷題?
2.在哪里刷題?
3.刷題的要點是什么?
4.還需要進行哪些學習?
那么,直接開始回答問題好了。
為什么要刷題?
一方面,實踐是檢驗水平的唯一方法,能不能解決問題,能不能自主地解決Bug,這是關系到編程能力的事情。學習最怕半瓶醋,理論知識看明白了,動手能力沒跟上,等于紙上談兵。
另一方面,刷題也是見識一下實際問題,什么樣的問題都有,能充分調動大腦的思考能力,增加知識面。也能在各種刷題網(wǎng)站上看到大牛們對某一問題的處理方式,為什么他們的算法這么簡單?為什么代碼這么簡潔?從中我們能學到許多編程思維和編程習慣,受之啟發(fā),化為己用。
還有一方面,我認為是為了保持手感和狀態(tài),每天刷幾道題,能讓狀態(tài)保持住。
在哪里刷題?
在某乎上搜索,有許多人給出了比較好的刷題網(wǎng)站,我選了幾個放進了收藏夾,與大家分享一下。
HackerRank,這個網(wǎng)站可以刷題掙分數(shù),然后有排行,這種方式很適合玩家來打榜。
Leetcode,這個網(wǎng)站的題目量也很多,而且編譯速度很快。
GitHub,這個網(wǎng)站大家應該有所耳聞吧,上面能搜到許多公司開源項目的代碼,簡直是一座寶庫。
刷題的要點是什么?
1.先讀懂問題,基本上都是英文的題目,問題描述和舉例也很清楚,但我們需要注意解題的限制。
2.想出幾種解題思路和實現(xiàn)方法,然后再作比較,哪種方法最優(yōu)。
3.在驗證代碼無誤,結果正確后,再看下官方提供的解答,以及其他答題者的討論,你從中能收獲很多。
4.記錄自己做題時出現(xiàn)的編譯錯誤和原因,每天記錄并整理,不斷地修正后,直至不出現(xiàn)Typing Error這種低級錯誤??梢允褂肎itHub來保存每天的刷題題目和內容。
還需要進行哪些學習?
我在HackerRank網(wǎng)站上刷題時,每題分數(shù)從5到500分不等,難度也是有Easy,Medium和Hard,Expert這種級別,在高難度題目中,我發(fā)現(xiàn)要解決的某個實際問題,許多是涉及數(shù)學的算法的,因此,后面我要研究下常用算法和相應的代碼實現(xiàn)方式。