寒假挑战PythonTip(一人一python)总结——算法是程序的灵魂,程序员的心法
2014年2月中旬,我上升到挑戰(zhàn)python英雄榜第3名。這是我寒假修煉算法的成果之一。來(lái)一下總結(jié)吧!
?
Linux的創(chuàng)始人Linus Torvalds在一次演講中有一段涉及“什么才是優(yōu)秀程序員”的話:
“爛程序員關(guān)心的是代碼。好程序員關(guān)心的是數(shù)據(jù)結(jié)構(gòu)和它們之間的關(guān)系。”
由這句話的啟發(fā)開始,加上我越來(lái)越覺得自己編程能力不足,碼代碼經(jīng)常要重構(gòu),邏輯思維不過(guò)細(xì)膩謹(jǐn)慎。正是過(guò)于關(guān)注代碼,完成率所致。我已經(jīng)學(xué)過(guò)C/C++/nasm/java/python/html/js/jq/shell等等語(yǔ)言,對(duì)計(jì)算機(jī)世界的工作原理有比較好的認(rèn)識(shí),但代碼能力一直上不去。我想算法,就是我的瓶頸。于是有了以下故事。
寒假開始,我便在項(xiàng)目工作之余掃pythontip上的題。十幾天里,有時(shí)一天7、8道題,有時(shí)2、3題,我的排名慢慢從第N頁(yè)到第4頁(yè)到第2頁(yè),讓后到第1頁(yè)。當(dāng)我掃完101題后,我成功了42題,剛好排在第一頁(yè)最后一名。然后我休息了一下,繼續(xù)有成功幾題。這大概就是我的無(wú)算法時(shí)代極限了。
第二階段,我網(wǎng)搜博客,算法,學(xué)習(xí)排序。好來(lái)買了《編程珠璣》和《編程之美》,邊看邊攻克pyhtontip上的題目。
在PythonTip 上的一些水題這博客中學(xué)習(xí)了很多,尤其是看到問(wèn)題一句話就解決時(shí),恍然大悟。
1、有很多利用lambda, reduce, map, zip, 列表分片/解析, sum, max, min, divmod, round, hex/oct/bin;?set,list,dict; 一句話解決的。這是我認(rèn)為python強(qiáng)大原因,非常好用。
2、關(guān)于二進(jìn)制‘1’的處理是非常妙的,這些題往往詮釋了計(jì)算機(jī)較人類思維不同的特性,以及如何能讓程序員思考得更“計(jì)算機(jī)”一些。在《編程之美》,上面提到的博客中都有提到。
3、獨(dú)立思考,讓后比較,我獲得更多。在最大連續(xù)子序列,最大非連續(xù)子序列,最長(zhǎng)回文子字符串中,我收獲很經(jīng)典的算法。同時(shí)還想出來(lái)與Manacher算法一拼的做法。
L = '#'.join(list(L)) # len is odd now! l = len(L)o,r=0,0 # 圓心,半徑(不計(jì)圓心) for i in range(1,l):if i+r<l and L[i-r:i] == L[i+r:i:-1]: # 移到:最右方便來(lái)計(jì)算o,r=i,rwhile i+r+1<l and L[i-r-1] == L[i+r+1]:r += 1# print L[o-r:o+r+1]L1 = L[o-r:o+r+1] t1,t2 = L1[::2],L1[1::2]print t1 if any(i!='#' for i in t1) else t2
3月13日的 格式優(yōu)化版:
L = '#'.join(L) L = '#'+L+'#' # 因?yàn)檫@句,末尾print語(yǔ)句統(tǒng)一了。o,r = 0,0 l = len(L) for i in xrange(l):if i+r >= l:breakif L[i-r:i]==L[i+r:i:-1]:o = ij = r+1 # 嘗試加一while o-j>=0 and o+j<l and L[o-j] == L[o+j]:j += 1r = j-1print L[o-r+1:o+r:2]?
又經(jīng)過(guò)10多天,我又掃完一遍題,這次我以72題的成績(jī)排在GodIsCoding和YOSHINO之后第三名。
python是很美很簡(jiǎn)單語(yǔ)言,如其名。
題外話:
沒能及時(shí)報(bào)考C語(yǔ)言二級(jí),非常遺憾,英語(yǔ)六級(jí)不知道報(bào)呢還是不報(bào)好。
轉(zhuǎn)載于:https://www.cnblogs.com/weishun/p/py-algorithm.html
總結(jié)
以上是生活随笔為你收集整理的寒假挑战PythonTip(一人一python)总结——算法是程序的灵魂,程序员的心法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新做了一个项目,一个人做的,关于数据传输
- 下一篇: ThinkPHP框架搭建网站