天天看點

初刷LeetCode的感受

  自從上個月進入實驗室的雲安全項目組後,因為要接觸到實際的代碼,在實驗室博士的建議下我們項目組的碩士開始刷LeetCode練習程式設計能力,保持每周抽空刷幾道算法題。雖然刷的不多,到現在一共隻刷了不到30題,但在刷題的過程中還是有很多感觸的。

  實驗室的博士建議我們按照題目的難易順序循序漸進由易到難來刷,我也就照做了。因為前段時間在系統地學Python語言,是以我主要用的是Python語言來做,有的題目也采用了C/C++、Java甚至C#多種語言來嘗試。在刷題的過程中,總結了自己的一些問題:

  1. 對于資料結構類的題目(例如連結清單、二叉樹等),其實是很簡單的題目,但因為很久沒有接觸資料結構的代碼,沒有信心去嘗試。以後要客服這種畏難的心理,應該在刷題的過程中做到邊做邊學。

  2. 對于帶有字元串或者數組操作的題目,用類C語言嘗試總是會遇到困難,也産生了畏難心理,在這方面還要多看看書來加強。

  3. 有的題目乍一看很簡單,但用一般的算法很容易逾時(特别是對于Python這種執行速度慢的解釋型語言),有的題目甚至要求了不能用額外的空間、不能使用循環或者對于時間複雜度有要求(O(n)甚至O(1))。看來還要提高算法優化的水準,同時數學能力也非常重要。

  4. 算法類的題目總體來說還是比較有難度,題目出的也很巧妙,有時候需要進行一番頭腦風暴才能有一些頭緒,以後還要多刷題保持程式設計的感覺。

  5. 英文快速閱讀水準還要再加強,因為題目都是英文的,有些比較長的題目不太容易看懂。

  針對自己的這些問題,接下來要進行有針對性的補充學習。因為最近臨近期末,是以打算利用寒假好好惡補。目前主要是要提高資料結構與算法方面的能力(手上關于算法和資料結構的書太多了),同時還要繼續學習Python語言(廖雪峰教程+實際項目)、Linux系統(鳥哥的私房菜+實際操作)以及與項目相關的OpenStack雲平台上的開發,再深入地學習Java或者C++其中的一門語言。有機會的話還想接觸一下機器學習,手裡正好有一本用Python語言寫的《機器學習實戰》。

  要成為一名合格的程式猿需要學的東西太多,不光是知識的廣度,更重要的是深度的積累。未來任重而道遠啊!

  附上到目前為止所刷過的LeetCode題:

# Title Acceptance Difficulty
326 Power of Three   39.1% Easy
1 Two Sum   29.2% Easy
169 Majority Element   44.5% Easy
206 Reverse Linked List   43.1% Easy
136 Single Number   52.5% Easy
231 Power of Two   39.1% Easy
415 Add Strings   41.4% Easy
242 Valid Anagram   44.5% Easy
441 Arranging Coins   36.3% Easy
349 Intersection of Two Arrays   45.3% Easy
258 Add Digits   50.0% Easy
66 Plus One   36.6% Easy
292 Nim Game   54.5% Easy
171 Excel Sheet Column Number   44.9% Easy
342 Power of Four   37.1% Easy
434 Number of Segments in a String   40.0% Easy
344 Reverse String   57.4% Easy
345 Reverse Vowels of a String   37.0% Easy
27 Remove Element   36.6% Easy
237 Delete Node in a Linked List   45.2% Easy
371 Sum of Two Integers   51.5% Easy
13 Roman to Integer   43.1% Easy
383 Ransom Note   45.8% Easy
9 Palindrome Number   33.9% Easy
389 Find the Difference   50.2% Easy
412 Fizz Buzz   58.1% Easy
283 Move Zeroes   47.4% Easy

轉載于:https://www.cnblogs.com/qiuzhenyao/p/leetcode.html