数据结构与算法学习总览

数据结构与算法学习总览

01 | 数据结构

1、一维

1)基础:数组 array,链表 linked list
2)高级:栈 stack,队列 queue,双端队列 dequeue,集合 set,映射 map(hash or map), etc

2、二维

1)基础:树 Tree,图 Graph
2)高级:二叉搜索树 binary search tree (red-black tree,AVL),堆 heap,并查集 disjoint set,字典树 Trie,etc

3、特殊

1)位运算 Bitwise,布隆过滤器 BloomFilter
2)LRU Cache

02 | 算法

1)if-else, switch -> branch
2)for, while loop -> Iteration
3)递归 Recurison:深度优先搜索 Depth first serarch, 广度优先搜索 breadth first search,启发式搜索 A*,etc
4)动态规划 Dynamic Programming
5)二分查找 Binary Search
6)贪心 Greedy
7)数学 Math,几何 Geometry

03 | 精通一个领域

1、切碎知识点 Chunk it up

1)基本功是区别业余和职业选手的根本
2)基础动作的分解训练和反复练习 ->最大的误区:认为只是练一次就够了

2、刻意练习 Deliberate Practicing

1)刻意练习—过遍数(五毒神掌)
2)练习缺陷、弱点的地方
3)克服 不舒服、不爽、枯燥

3、反馈 Feedback

1)及时反馈
2)主动型反馈(自己找):
a. 高手代码(GitHub,LeetCode,etc.)
b. 第一视角直播
3)被动反馈(高手给你指点):
a. code review
b. 教练看你打,给你反馈

04 | 切题四件套

1、Clarification
2、Possible solutions

1)compare(time/space)
2)optimal(加强)

3、 Coding(多写)
4、Test cases

05 | 刷题五遍法(五毒神掌)

1、刷题第一遍

1)5分钟:读题 + 思考
2)直接看解法:注意!多解法,比较解法优劣
3)背诵、默写好的解法

2、刷题第二遍

1)马上自己写 -> LeetCode 提交
2)多种解法比较、体会 -> 优化!(减少算法的执行时间)

3、刷题第三遍

1)过了一天后,在重复做题

4、刷题第四遍

1)过了一周:反复回来练习相同题目

5、刷题第五遍

1)面试前一周回复性训练

06 | 小结

1、 职业训练:拆分知识点、刻意练习、反馈
2、 五步刷题法(五毒神掌)
3、 做算法题的最大误区:只做一遍

07 | 思维导图

1、数据结构与算法学习总览思维导图
数据结构与算法学习总览_第1张图片

参考文献:

[1] 覃超. 算法训练营[M]. 极客时间, 2019.

你可能感兴趣的:(#,数据结构和算法专题,算法,数据结构,leetcode)