Python-LeetCode 581 自序 --- 「小兄弟,我看你骨骼精奇,是百年難得一見的練武奇才,我這裡有一本程式設計的祕笈,今日有緣就十元錢賣給你,未來保衛地球,征服銀河系的重責大任,就交給你了!」 刷LeetCode刷了快一年,打算來寫一些武功秘笈為社會做一點貢獻也確認自己還活著 :)。 這系列筆記基本上是Python+LeetCode+常用算法技巧。並非是寫一份LeetCode題解,畢竟LeetCode的題解在LeetCode網站上就可以很方便的找得到,而且 題目太多不可能逐題講。主要目標是放在演算法學習,所以是以算法來分類講解,透過LeetCode的題目來演繹展示算法的運用,大概是每種招式挑幾題來說明,題目挑選時,原則是找比較經典具代表性的,除非是為了講解原理會找簡單題,否則通常是找難度medium與hard的題目。 目標讀者是程式有點基礎的人,大學修過或正在修程式設計、資料結構與演算法三門課的人,中學生APCS三級以上的人也合適。 對於算法來說程式語言的差別或許不大,所以其他程式語言的使用者或許也能看,但這系列的筆記我會著重在Python刷LeetCode的技巧。另外,我之前有寫過一份AP325的講義是C++為主的,請看下方的作者介紹。 (2023/8/14,2023/10/27更新) 2023/12/02完工後記:幾個月以前,因為一些因素使得我不方便出門,八月的時候,心想既然要在家待著,就找件事來做吧,剛好從2022年9月開始刷LeetCode也11個月刷了1500題,那就來寫個LeetCode演算法的筆記吧。寫了LeetCode介紹與第一個單元就在臉書上公布,這其實是我督促自己的方法,離開職場的我慾望越來越少,所以我也怕自己沒動機半途而廢,不過既然對外說了要寫,我應該就會把它寫完。因為現在不能久坐,只想慢慢寫就好,最近一個多月我又因為五十肩與痛風接連發作,有時連坐在桌前也沒有辦法。好在歷時近四個月最終我還是把這個心願完成了。 古人說「文窮後工」,2020年因為被Covid-19疫情所困,我寫了AP325的講義,2023年又因個人因素所困動念寫了這份Python-LeetCode 581系列筆記,這兩份講義雖然算不上什麼大作,也算是因窮困才動念完成的,古人的話還是有道理的。 筆記內容大致完成了一開始規劃的九成,本來還有規劃一些單元,但比較零散,目前就暫時擱置了。筆記的內容對我來說是駕輕就熟,少部分需要找的資料也很容易在網路上搜到,其他的工作是挑選合適的範例題以及把之前寫的程式整理一下,畢竟自已刷題時寫的程式有時醜的很,拿出來當示範還是要梳妝打扮一下。 --- 作者介紹:筆者吳邦一,學術專長為演算法的退休教授([學術著作](https://scholar.google.com.tw/citations?user=a0wbKRAAAAAJ&hl=en)),曾經參與程式比賽相關工作多年。2022年9月開始依照題號順序刷LeetCode當興趣,目前(2023/8)通過題數>1500,大多使用Python,因為Python比較適合老人。 我退休後寫過一份講義AP325,原意是(APCS 3 to 5),目標是提供APCS實作題3級分程度人要前進到5級分需要的算法技巧,簡單來說可以看做是競程初步,講義剛好325頁,裡面有一百多道題目,可以在臉書社團[APCS實作題檢測](https://www.facebook.com/groups/359446638362710/)中找到。 2022年筆者榮登「全球前2%頂尖科學家(World’s Top 2% Scientists 2021)」榜單,為「學術生涯科學影響力(1960-2021)」入榜學者之一[(中正新聞)](https://www.ccu.edu.tw/p/406-1000-26995,r983.php?Lang=zh-tw)。