庖丁解牛 把数据结构的一个又一个知识点分解开来
It is important to view knowledge as sort of a semantic tree —— ElonMusk
覃超建议 把数据结构这么分:
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
注意:在头脑中回忆上面每种算法的思想和代码模版
(动手绘制脑图去)
LeetCode上面有很多别人写的非常好的代码
刷题的方式(切题四件套)
Clarification(多看几遍题目 && 和面试官多沟通,确保自己对题目的理解是对的)
把题目看清楚 题目要干嘛 很重要
Possible Solutions
所有可能的想法。不要只用想到的第一种解法去解。要去用所有可能想到的方法,从中找出最优解法
- compate (time / space)
- optimal (加强)
Coding(多写)
Test cases(测试用例要多写几个,给面试官大人感觉,自己要有始有终)
五毒神掌
刷题第一遍
- 五分钟:读题 + 思考 (如果基础薄弱 可以给自己10分钟 最多15分钟)这里不能略过
- 有思路 直接做 直接写 || 超时 ——>> 直接看解法!注意!多解法,比较解法优劣(理解学习和运用算法 不是让你去造轮子)
- 背诵、默写这样好的写法(并不是死记硬背即可,先背诵记住了之后,一般来说肯定就能理解了。很多题目以后看到就条件反射了)(不能打击自己的积极性)
刷题第二遍
- 马上自己写(一开始可能会有bug 没关系 debug debug debug 修改修改修改) ——>LeetCode提交
- 多种写法、体会 ——>优化!(最重要的是执行时间)
刷题第三遍
- 过了24 小时的时间以后,再次重复做题
- 不同解法的熟练程度 ——> 专项练习
刷题第四遍
- 过了一周之后: 反复回来练习相同的题目
刷题第五遍
面试前一周恢复性的训练
原文:https://www.cnblogs.com/ssaylo/p/12676845.html