1、学习方法
- 预习
- 课堂互动
2、期待效果
- 职业顶尖级别
- 一线互联网公司面试offer
- LeeCode 300+ 的积累
《异类:不一样的启示录》介绍学习方法
3、精通领域3步
- Chunk it up 切碎知识点 (即 庖丁解牛 脉络连接 如脑图 合而分奸之 把知识变为树状结构 人脑不适合记忆孤立的知识)
- Deliberate Practicing 刻意练习 过遍数 5遍刷题法 练习缺陷、弱点地方
- Feedback 反馈 及时反馈 主动反馈(自己找) 被动反馈(高手指点)
4、职业化运动
- 基本功是区别业余和职业选手的根本
- 基础动作分解训练和反复练习 - 只练1遍是不行的
5、技巧
- 解题技巧
- Clarification 审题清晰
- Possible solutions 所有可能解法,比较时间和空间复杂度 找最优解
- Coding 多写
Test cases 测试样例 要尽量全
<br /> 2. 刷题遍数
第一遍 5分钟:读题+思考;无思路则直接看解法,比较解法优劣;背诵和默写好的解法然后理解
- 第二遍 马上自己写 -> LeetCode提交代码 -> debug -> 通过;比较写法都写一遍,优化
- 第三遍 过了一天之后 再重复做题;不同解法熟练程度进行专项练习
- 第四遍 过了一周之后 再重复做题;不同解法熟练程度进行专项练习
- 第五遍 面试前一周恢复性训练
4、数据结构 了解每个数据结构的原理和代码框架
- 一维
- 基础:数组array(string),链表linked list
- 高级:栈stack,队列queue,双端队列deque,集合set,映射map(hash or map),etc
- 二维
- 树tree,图graph
- 二叉搜索树binary search tree(red-black tree,AVL),堆heap,并查集disjoint set,字典树Trie,etc
- 特殊
- 位运算Bitwise,布隆过滤器BloomFilter
- LRU Cache

5、算法 脑海中有每种算法的思想和代码模板
- if-else,switch -> branch
- for,while loop -> Iteration
- 递归Recursion(Divide & Conquer,Backtrace)
- 搜索Search:深度优先搜索Depth first search,广度优先搜索 Breadth first search,A*,etc
- 动态规划Dynamic Programming
- 二分查找Binary Search
- 贪心Greedy
- 数学Match,几何Geometry
补充
- 排序
- 分治
- 回溯
- 字符串匹配算法


