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 是打基础,基础打好后,上层应用也得搞,只搞基础是不够的,但没有基础是万万不能的——基础不牢地动山摇。