剛好有時間來回一下。
本文不提供任何連結,
反正隨便搜都有很多類似的資料。
小弟對於online judge跟程式入門算是略有心得,
來貢獻一下,給未來想學習、入門程式設計或是寫白板題的人一點參考。
基本上就是照著自己的心路歷程寫,
過程中排了一些雷省了大家一些彎路。
程度大概是:
比下大學程式課都閉著眼睛前三名,
Google new grad面試基本上不用提示順順解。
比上競技程式設計基本上隨便被打趴,
Google team match沒人要。
先講一下怎麼從零開始學程式,
基本上就隨便買一本C++入門書、
或是網路上隨便一個C++教學網站,
(喔對這邊只推薦入門C++一開始hardcore了一點但對整個計算機的基礎很有幫助)
就照著學照著寫,大概學完條件跟迴圈就可以開始摸online judge 了。
後續單元大概就遞迴跟涵式比較重要,
總之就一邊玩judge 一邊慢慢學。
整本書大概三到四個月可以幹完(有國高中課業的狀況下,如果沒課業的話一個月)。
再來是比較痛苦的部分(雖然個人挺喜歡的,解題的過程會有快感),
基本上就是熟悉完zero judge 的環境之後開始練「語感」。
這裡使用zero judge 的原因是:(根據印象中)上面有大量「平鋪直敘」的題目,
也就是基本不需要任何演算法、資料結構,
只需要用基本條件、迴圈的概念就可以解出,
算是比leetcode easy還要簡單的類型。
這邊要獲得的能力是看到一個敘述能夠秒轉成程式碼,或是程式碼可以秒轉敘述。
如果獲得了這個能力,恭喜你,你的程度已經可以跟上修完程設的四大資工學生了。
喔對,如果你是高中生,這時候可以去打比賽,基本上有這個能力在鄉下就可以拿地區前三名了(至少十年前是這樣)。
喔對,整個學習歷程裡面只有這個部分需要「刷」,其他多餘的背誦、刷題都不建議。
在上述步驟的同時可以開始一邊看資料結構跟演算法了,
一樣網路上隨便搜一個連結或是隨便買一本書都行。
而之所以要先開始練習「語感」再看資料結構演算法是因為通常這類型的書或是教材會有大量虛擬碼,要有一定的讀程式能力才有辦法順順看。
這邊可以分成兩個方向:
1.想要海納百川多學點
那就沒甚麼好說的,整本書都看一看。
看完之後再去研究下面說的pattern。
2.只想應付白板題和leetcode
要去找leetcode的pattern,
這種東西網路上隨便找也是一大堆,
隨便給個關鍵字“two pointers”。
總之呢就是可以把leetcode/白板題常見的解法分成幾個類型,往這些方向讀就可以了。
再來就可以真的開始來寫leetcode了,
可以找別人整理好的100題list下手。
至於leetcode怎麼寫跟怎麼被Google刷掉,
有人想看的話之後再分享好了,
反正我是沒簽NDA。