最近為了準備筆試岁疼,每天總會抽出點打游戲的時間刷刷 leetcode
刷題嘛侥加,無非就是看著題目楞想,每種思路試一試弃锐,試不出來看提示袄友,還不行看別人的答案然后學思路再換種語言默寫一遍。
那么這個過程到底是在干啥呢霹菊?——學習
讓我們站在旁觀者的角度上審視一下發(fā)生了什么剧蚣。
1,遇到一個問題,第一反應是能不能 一眼看出通解鸠按,不行就看能不能 分治 動歸礼搁,搜索。目尖。馒吴。(我會的套路太少,只能拽這幾個了 -_-) 這個順序是根據(jù)經(jīng)驗來的瑟曲,再有就是題目要求和輸入本來的性質(zhì)饮戳。如果一直做動歸的題,突然來個不是動歸的测蹲,第一反應可能還是動歸莹捡,為啥,訓練的都是動歸的扣甲,形成思維定勢了(false positive) (本山:"等于二篮赢!"范偉:"你剛才不是說三么。琉挖。启泣。")
2,確定思路以后示辈,解題最難的就是看出不變量寥茫,可是能看出來往往問題已經(jīng)解出來了。就像用歸納法證明矾麻,你首先已經(jīng)把不變量看出來了纱耻,才會去構造那個不變量,而這個不變量往往很難直接看出來的险耀,沒有靈感則只能先楞構造弄喘,然后看看有沒有不變量出現(xiàn)。
也就是大師先看出了答案再寫出程序甩牺,菜雞先瞎湊程序然后看能不能湊出答案蘑志。
這就是為什么光知道思路是不夠的,單說動歸贬派,前綴急但,后綴,中間向兩邊搞乏。構造不變量的 f(x) 可能是最小值波桩,最大值,長度请敦,數(shù)量等等等等镐躲“芈保看到答案的時候往往只能感嘆,我去匀油,遞推公式這么簡單我怎么就沒想到呢。勾笆。敌蚜。
那么大師為什么能成為大師呢?因為他見得多了窝爪,腦子里不知怎么的就大概看出了很好的性質(zhì)弛车。
大師也不是謙虛,你去問他蒲每,他是真的不知道怎么就看出來纷跛。
因為他的腦子已經(jīng)訓練好了嘛。
所以真的是希望能有這樣的專家系統(tǒng)來輔助決策:
1邀杏,輸入一個算法題贫奠,想要的時間復雜度,輸出應該用什么思路望蜡,可能是用了哪些數(shù)據(jù)結構
2唤崭, 輸入一組輸入輸出,輸出可能是通過什么不變量構造出來的
聽說 deepcoder 已經(jīng)能做這方面的事了脖律。https://www.zhihu.com/question/56250357
真希望 編程大師 滿地走的時代早日來臨啊谢肾。
弱雞如我只能認為,編程就是瞎&#猜小泉,只不過有的人猜的準芦疏,猜的優(yōu)雅,簡潔微姊,高性能酸茴,可復用而已。
創(chuàng)造力到底是怎么回事我真的不懂柒桑,我也不覺得有那種看了就能變聰明的書弊决,因為我不信看某種書就能從根本上改變我腦子的構造。
人生而不平等魁淳,有的人腦子訓練起來就是快飘诗,可能他們神經(jīng)元連得少吧。