for (剛入門的編程)的高中 or 大學生
leetcode 介紹
leetcode 可以說是 cs 最核心的一門“課程”了,雖然不是大學開設的,但基本上每一個現代的高水平的程序員都修過這門“課程”(或者類似的課程,比如數據結構、算法等)。
好處
- 鍛煉編碼能力,這是程序員最重要的能力,Talk is cheap. Show me the code —— linux 之父
- 鍛煉思維敏捷能力、邏輯能力、抽象能力、解決問題的能力,這些能力對于程序員而言都是必備的能力,否則只是 code monkey
- 學習了解算法基礎。
方法

- 注意輸入輸出:leetcode 的核心就是解決輸入到輸出,更多的關注輸入和輸出會讓做題更容易
- solution:就是思路,里面會羅列常見的解題思路。一本書可以看多次,一道題可以用多種做法做。有些思路的性能很好,如果你想追求卓越,那肯定要來試一下——看懂性能更好的思路并寫出來。
- 調試:通過打日志(python 里用 print,js console.log 這兩個基本上等價)的形式調試,抓住核心變量,通過觀察核心變量值的變化了解程序的運行情況,點擊 run code 的時候日志會在 stdout 里打印出來。
基礎
- 語法基礎
- 數據結構
- 算法
一般掌握一門編程基礎的語法后,就可以做一些 easy 的題了,但少數 easy 的題和大多數 medium 的題需要數據結構的知識,少數 medium 的題和大多數 hard 的題需要算法知識。
數據結構和算法分不了家,所以一般是一起或者連著學習。數據結構和算法可以說是計算機專業最重要的一門課之一,原因和 leetcode 這么重要類似,鍛煉編碼能力、邏輯能力、思維敏捷能力、抽象能力、解決問題,從而可以完成復雜的編程任務,成為一個厲害(高薪、少加班)的程序員。
python 數據結構與算法學習資料:
- 英文:https://runestone.academy/runestone/books/published/pythonds/index.html#
- 中文:https://facert.gitbooks.io/python-data-structure-cn/
這本書總共可以分 3 個階段來閱讀,慢慢讀,同時配合做 leetcode,兩個月一個階段即可。
階段一:ch1-ch3 基礎知識學習,溫故+學習面向對象,以及算法的基礎概念,可以以更好地性能來實現 easy 的題
階段二:ch4可以解決部分 medium 題
階段三:ch5-end 可以解決大部分 medium 題,部分 had 題。
ps:leetcode 是打基礎,基礎打好后,上層應用也得搞,只搞基礎是不夠的,但沒有基礎是萬萬不能的——基礎不牢地動山搖。