進入簡書的第一天
????今天通過和劉兄交流,深感堅持寫博客不僅可以提升自己的寫作能力,還可以總結(jié)每天學習的東西,記錄自己對于生活的感悟,以后回過頭來看自己前一階段所學所思實是一種樂趣。
????因此,我腦海中產(chǎn)生一個大膽的想法,堅持每天記錄博客,記錄自己的每天所學所思所得。盡量做到細致,就算再沒時間每天也要堅持寫三五十個字。這對我本人是一個不小的挑戰(zhàn),因為我很難長時間堅持做一件事情- -,也許是星座的原因(據(jù)說雙子座經(jīng)精力不容易集中。哈哈,無情甩鍋)。
????每天的記錄從兩個方面進行:
- 對于今日所學所思進行總結(jié)
- 對于明天學習生活的作一個簡單計劃
等以后寫作技巧漸漸純熟,我會嘗試開辟專欄來對特定方面的技術(shù)進行連載(哈哈,前提日報能堅持下來~)
今日總結(jié)
????今天學習方面主要是編程。在leetcode(力扣)網(wǎng)站上刷了五道編程題。
- 第K個排列 (middle)
- 旋轉(zhuǎn)鏈表 (middle)
- 不同路徑II (middle)
- 最小路徑和 (middle)
- 有效數(shù)字 (hard)
????“第K個排列”用到一個非常強的技巧,稱之為階乘數(shù)系統(tǒng)方法。其數(shù)學原理就是排列的每種情況都可以用十進制或二進制表示,在十進制和二進制無法滿足解空間數(shù)量時,甚至可以使用階乘數(shù)系統(tǒng)(即N!)。這種方法可以精確的計算出排列中第k大的組合。相比先列出全排列再排序,時間復雜度從O(N^N) 下降到了O(N^2)??梢妰?yōu)化一個算法的非常有效的方法是從數(shù)學上去優(yōu)化。順便復習一下全排列的實現(xiàn)方法(回溯法)。下次學習一下生成全排列的字典序方法。
????“旋轉(zhuǎn)鏈表”相對常規(guī),遍歷鏈表兩次,第一次計算其長度并將其首尾相連,第二次在指定位置將鏈表斷開即可,注意使用k%N減少遍歷長度。
????不同路徑II”和“最小路徑和”是簡單的動態(tài)規(guī)劃問題,最優(yōu)子結(jié)構(gòu)很容易看出。這里我出了一個很簡單卻很致命的錯誤,查了好久才查出來,僅此記錄:
#test.py
for i in len(nums): //錯誤
for i in range(len(nums)): //正確
????“有效數(shù)字” 這一道題可以采用常規(guī)的正則表達式法,還有一個非常騷的操作:采用《編譯原理》里的確定有限狀態(tài)機(DFA)解決。仔細閱讀官方題解深感DFA方法精妙,舉一反三也可以應(yīng)用到其他問題上,后面有機會將對其進行深入剖析,這里不再贅述(第一次寫,寫到這已經(jīng)花了1個多小時,哭)。
????這兩天在家又刷了一遍經(jīng)典西游記,看到真假美猴王一集,如來佛祖稱其用金缽罩住的是六耳獼猴。我腦洞大開,會不會被罩住的才是真正的孫悟空,后來陪唐僧取經(jīng)的是六耳獼猴,這其實是一次陰謀的除掉孫悟空的行動?哈哈,純屬個人胡亂猜測。
明天計劃
????明天進入工作日,結(jié)束兩天輕松生活開始工作:
- 繼續(xù)編程,在LeetCode上刷7道題并總結(jié)(3道算法題,3道SQL題,1道Shell題)
- 復習Python的高級特性(metaclass、裝飾器、偏函數(shù)等)
- 和劉兄討論微信小程序開發(fā)計劃,并著手開發(fā)(交互式問卷系統(tǒng),修復公眾號代碼)
- 堅持記錄博客,提高寫作效率,優(yōu)化內(nèi)容,爭取每天花費時間在一個小時內(nèi)
就這樣吧~