各位好~我是一個軟體工程師,追求每年都要有不一樣的進步,今年追求的是把自己的基底在打的更穩,之前也沒機會來認真刷題,刷LeetCode就是在練習對演算法及資料結構的熟悉度,而演算法跟資料結構就是每個工程師重要的基底。另外也給自己一些不一樣的挑戰,原本一開始是想用熟悉的語言來刷題,不過最後想趁這個機會應該去熟悉一個不熟的語言,於是最後在這過程中我邂逅了適合AI領域且在今年已經擠進TIOBE第二名的Python。
截圖來自2021年8月份的TIOBE语言排行
本系列文重點在刷LeetCode解題思維,是演算法及資料結構的入門文章。
本系列文過程重點在分享這些題目的解題方法及思維,會在過程中去解釋這些資料及邏輯是怎麼跑的,目標是在這三十天結束後能在看完題目的當下,腦中可以去想像模擬出這些資料流向及這些邏輯的運作過程,也讓腦中可以想到哪些題目可以用哪些演算法策略或是資料結構來解題。
接下來的每一天我會選擇一個我認為適合的題目來練習,會依照主題把一些基本的演算法及資料結構主題都走過一次,所以基本上都會以Easy的題目為主,每個主題看狀況選擇1~3題,從這些題目帶出觀念,讓過程有一步一步往前的感覺,這邊先分享我個人平常選題的方法。
平常的活動範圍大概就會在Problems這個頁面跟刷題畫面了,在這個頁面上主要在做的事情就是選題。
我通常會有目標性的去選擇題目,不會隨機挑題目,例如我今天想練習Binary Search Tree那我就會直接以這個當Tag來找尋我要的題目,所以進來後第一步我就會點Tags開始找我要的目標。
再來第二步我會先開啟小齒輪,勾選Show topic tags,這時候在每個題目下面就會出現這個題目相關的主題Tags,在一開始練習的時候我都會盡量選擇主題數量較少的題目來練習,這樣可以幫助自己在思考解題時的方向。
最後如果有需要會再調整Difficulty,依照你想要練習的難度來選擇,我個人都會從Easy開始,所以我會直接選擇Easy。
以上大概就是我的選題方法,如果過程自己想找一些題目來練習可以參考這個方法,不過如果是已經有目標題目想練習像是跟著本系列文直接走的話,也可以直接在搜尋框打上題號找目標即可,如下圖。
另外補充一下,這個頁面上題目列表右側有一個區塊是你的刷題數量,如下圖。
也可以看看,自己前進的感覺,讓自己增加些成就感。非常建議,自己在刷題時不要為了衝刷題數硬刷,可以先知道有哪些演算法及資料結構以後,再來刷會讓你更有方法的去解題,也因為這樣本系列文在刷每個題目時,會盡量帶出這個題目相關的演算法或資料結構的觀念。
內容有什麼問題或建議歡迎一起交流:)
感謝您今天願意花時間看完這篇文章~~~~
Next:414. Third Maximum Number