精通一个领域
- 切碎知识点
- 刻意练习 (最大误区,一遍是远远不够的)
- 过遍数 (五毒神掌)
- 练习缺陷、弱点地方
- 不舒服、不爽、枯燥
- 即时反馈
- 主动型反馈(自己去找)
- 被动式反馈
刷题技巧
切题四件套
Clarification
Possible solutions (所有可能的解决都过一遍)
compare (time/space)optimal (加强)
Coding (多写)
Test (测试)
五毒神掌
刷题第一遍
- 5分钟: 读题 + 思考
- (没有思路) 直接看解法:注意! 多解法,比较解法优劣(背诵,记录即可)
- (有思路)直接写
刷题第二遍
- 马上自己写 —> LeetCode提交
- 多种解法比较
刷题第三遍
- 过一天后,再重复做题
刷题第四遍
- 过一周之后,再重复做题
刷题第五遍
- 面试前一周前恢复性训练
数据结构
- 一维
- 基础 数组 (array) , 链表 (list)
- 高级 栈(stack) , 队列(queue) , 双端队列(deque) , 集合(set) , 映射(hash or map) . etc
- 二维
- 基础 树(tree) ,图(graph)
- 高级: 二叉搜索树(binary search tree) (red-black tree ,AVL) 堆 heap 并查集合 disjoin set 字典树 (Trie). etc
- 特殊
4. 位运算 Bitwise , 布隆过滤器 BloomFilter
2. LRU Cache
算法
找重复单元,化繁为简
- 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
- 数学 Math , 几何 Geometry
注意: 在头脑中回忆上面每种算法的思想和代码模板
