百題突破,餘燼猶存

2022-07-08 16:36:24 字數 1767 閱讀 8202

被同學帶著去刷演算法,一晃兩個月,突破了一百題了,期間經歷過資料結構、貪心、動態規劃、二分查詢等等型別的題目,還有少數的智力題,在此過程中感覺獲益良多,特此寫一篇總結。

是什麼,可以擺脫無聊的環境問題,不被語言、硬體所限制?--演算法

是什麼,是隱藏在萬物之中的規律?--演算法

是什麼,只存在邏輯與計算,脫離繁瑣的業務?--演算法

平台選用了leetcode,題目的水平屬於acm入門級(儘管這樣還是難。。),題目有easy,medium,hard三檔,再開始刷題大概半個月之後,我強迫自己不刷easy了。easy大多都是埋坑的題目,思維難度不大,細節多。直到最近,強迫自己刷多點hard的題目。在此篇中,我就自己做過的題目歸類分為:資料結構類、分治類、動態規劃類、貪心類、回溯類等五類。

演算法只能鍛鍊程式設計師的思維,不能幫程式設計師提公升業務能力,但是他是個很有意思的玩意。

要做這件事(刷題),首先對某門語言進行熟悉,只需要熟悉邏輯結構的語法就行了;接下來就是先從簡單的開始(每個人的簡單不一樣),尋找正反饋;然後逐步提公升難度、限時、加量。

什麼樣的題目比較適合熱身的?就是基於你現在的水平一眼就能看到邏輯的,最好能在腦裡模擬程式執行步驟的,並且分析它的時間空間複雜度。

來吧,我們一起水題。

先看第一題,是不是特別簡單一眼就看出來了。它需要尋找兩個數加起來等於target的,並且把位置返回。直觀的想到使用兩個變數,雙重迴圈做加法匹配。

類似這樣一次遍歷,它的平均複雜度是o(n^2),空間複雜度o(1)  

如果針對這個演算法做優化,可以做成o(n)時間複雜度,但是要付出另外o(n)的空間

使用hashmap可以使得查詢效率變為o(1),這樣寫就是幾乎最快的解法了。

還有很多類似的題目熱身,就不再贅述了。

python 百錢百雞題

例子 有100文錢,要買100隻雞,公雞5文乙隻,母雞3文乙隻,小雞三隻一文,問公雞母雞小雞各多少只?方法一 1 usr bin env python2 coding utf 8 3for a in range 100 5 1 4for b in range 100 3 1 5for c in ra...

UVa百題總結

總算刷夠 演算法競賽入門經典 100題了,就像教主所說,有了練acm的誠意,受自身水平和眼界所限,這總結難免會有一些個人色彩和不正確的地方,大牛勿噴。另外我的文筆可能極其拙劣,將就著看吧。按照教主的進度安排,最理想的情況是寒假學完前八章,下學期開始學動態規劃 數學和圖論的基礎,為暑假集訓打下基礎。暑...

突破!寫於跑步百公里之時!

醞釀這篇文章已有一段時間了,一直想把這段時間的跑步感受和人生前30年經歷串聯起來,讓自己活的更加通透一些。誠然如果三個月前有人告訴我在三個月後的某一天我的月跑步公里數能夠達到150公里,我一定會覺得非常不可思議且難以置信,但是現在回過頭來看似乎也並非不可能,至於為什麼?其實在每次開跑的時候我都會問自...