1 数据结构
数据结构主要分为三类
一维、二维、特殊
一维:
-
基础:数组 array(string),链表 linked list
-
高级:栈 stack,队列 queue ,双端队列 deque,集合 set,映射 map(hash or map),etc
-
栈:前进后出
-
队列:先进先出
-
二维:
二维数据结构都是从一维泛化而来的
-
基础:数 tree 、图 graph
-
高级:二叉搜索树 binary search tree,红黑树,堆 heap,并查集 disjoint set,字典树 Trie,etc
特殊:
-
位运算 Bitwise,布隆过滤器 BloomFiter
-
LRU Cache
2 算法
-
if-else 、switch —> branch
-
for,whil loop —> lteration
-
递归:函数自己调用自己
-
搜索 Search:深度优先搜索 Depth first search,广度优先搜索 Breadth first search,A*,etc
-
动态规划 Dynamic Programming
-
二分查找 Binary Search
-
贪心 Greedy
-
数学 Math,几何 Geomtry
3 刻意练习
-
刷题反复练习
-
练习缺陷,弱点地方
4 刷题技巧
4.1 切题四件套
-
反复看题,确保自己理解是正确的
-
当看到题之后,想所有能够解这道题的解法,不要只用自己想到的第一种解法去解体(把所有能够解题的想法首先过一遍,不同的方法他们的时间复杂度和空间复杂度都不同),把时间复杂度和空间复杂度进行分析,从中找到一种最优的解法,也就是时间最快的一种解法
-
最后才是开始写代码
-
最后把测试样例列举多个
4.2 五遍刷题法
-
任何一个题目至少做五遍以上。
-
第一次接触这道题目,先花15分钟的时间读题和思考,把题目的意思理解了同时思考了
-
如果还是没有想出该怎么做的话,直接看解法,比较不同解法的优略。最后是默写记住这种解法,非常重要
-
当把别人的解法理解之后,马上自己写,这个时候就不要看别人的解法
-
多种解法比较,体会优化。最重要的就是比较他们的执行时间
-
最后过了一天,再次做重复的题
-
不同解法的熟练程度 —> 专项训练
-
过了一周:反复回来练习相同的题目
-
面试前两周进行恢复性练习
5 总结
-
职业训练:拆分只是点,刻意练习,寻求反馈
-
五遍刷题法
-