要刷題臨時抱佛腳往往會不那麼順利,不如像遛狗一樣,每日有餘力,就找方法練習一點,帶狗出去散散步,持之以恆。短時間也許沒什麼變化,但做久了肯定會帶來一些改變,也能有效保持自己寫程式和演算法的手感。
和大家分享一個日常練手的選項,如果有在使用 Leetcode 的人,不知道有沒有注意過介面右上角的這個火焰。
這是 Leetcode 每天會隨機挑一題來讓大家作為每日練習的目標,如果想要建立每日練習的習慣,這是一個選項。
缺點是它的難度會從 easy 到 hard,對新手來說可能會很挫敗,並不建議沒有一定刷題底的人用這個方法去學習,而是去找像是 這個頁面 裡面的系列問題,找一個系列開起來有系統地練比較合適。
https://ithelp.ithome.com.tw/upload/images/20231113/20142057bMZA3Xdu7B.png
適合刷每日問題的人會建議至少要對象這個系列文的演算法有大致了解,並不是說不能參考別人的解法,我也會建議在為自己設定解題時限後仍解不出來,就去參考別人的解法並比較,這是無妨的。
但如果本身知識量不夠,光是要看懂他人的解法、提到的名詞、演算法名稱,都不是短時間能看完的,每天消耗的時間會真的很多,而且因為每日練習的選題通常不一定具連貫性,難以即刻體驗到自己的進步,比較像是讓有一些程度的人意識到自己的不足(突然有一題不會或花很久時間的題目),對剛開始練習的人會是挫折度比較高、進步幅度比較緩的項目。
但我仍推薦建立每日刷題習慣,就看你是要用這種每日刷題,還是去寫上面提到的問題清單,甚至你想從 easy 開刷也沒問題,保持手感、建立信心,讓自己的刷題練習盡量變成正循環,不要為自己安排過大過陡的坎,維持下去,技能就會持續進步。
目前我自己是有用 Leetcode 的每日一題來做練習,為了記錄自己的思路和成長,我有寫一個 repo 來放我的解題想法和程式碼,是用中文寫的思路內容,我把連結放在下面,如果有一同練習每日題目的人可以參考,雖然我更新的時間比較不一定,也不一定是最優解,但會盡量列出我怎麼想的,也許可以解開一些人卡住的點。
https://ahchao.github.io/OnceLeetCodePerDay/
除了每日一題外,如果我有練一些題目或系統化的練習,我可能也會不定時更新在這個網站上。如果之後閱覽人數比較多我再去嵌一些互動介面方便留言討論。
那如果想要參照我的格式也自己搭一個,我這個頁面是 host 在 github 上,也有開 repo,參照一下這個 repo 你應該能很簡單的搭出一個類似風格的網站,使用了 highlight js 和 marked js 來做 markdown 文件讀取、code block 的 highlight,歡迎大家參考。
https://github.com/AhChao/OnceLeetCodePerDay