数据结构与算法总览
文章目录
数据结构与算法总览1、职业训练:拆分知识点、刻意练习、反馈(1)Chunk it up 切碎知识点数据结构 算法(2)Deliberate Practicing 刻意练习(3)Feedback反馈 2、五步刷题法(五毒神掌)刷题第一遍:第二遍:第三遍:第四遍:第五遍: 3、小结记录 极客算法训练营
职业训练:拆分知识点、刻意练习、反馈
五步刷题法(五毒神掌)
做算法题的最大误区:只做一遍
如何有效学习数据结构与算法
预习、互动、练习、分享
1、职业训练:拆分知识点、刻意练习、反馈
如果想要精通一个领域:分为三步走
Chunk it up 切碎知识点
Deliberate Practicing 刻意练习
Feedback 反馈(分为主动式反馈和被动式反馈)
一遍完全不够的 练习多遍
(1)Chunk it up 切碎知识点
庖丁解牛脉络连接tree 树
连接 拆分 整合
每一个点突破 、 练好的基本功
分解数据结构和算法
数据结构
一维:
基础:数组 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, 布隆过滤器 BloomFilterLRU Cache 最近最少使用 (least recently used)
数据结构
注意:了解每个数据结构的原理和代码框架
算法
if-else,switch —> branchfor, while loop —> Iteration递归 Recursion (Divide & Conquer, Backtrace)搜索 Search: 深度优先搜索 Depth first search, 广度优先搜索 Breadth first search, A*, etc动态规划 Dynamic Programming二分查找 Binary Search贪心 Greedy数学 Math , 几何 Geometry注意:在头脑中回忆上面每种算法的思想和代码模板
算法
算法脑图
算法脑图
数据结构脑图
数据结构脑图
动手绘制一份数据结构与算法脑图
(2)Deliberate Practicing 刻意练习
职业化运动:
基本功是区分业余和职业选手的根本
基础动作的分解训练和反复练习
刻意练习-过遍数(五毒神掌)5遍起
练习缺陷、弱点的地方,可能会不舒服、不爽、枯燥,说明在成长。
生活中的例子:乒乓球、台球、游戏等等。
每天都是这么枯燥的练习的 没那么苦逼的 练习练习就好了 还可以。
练习缺陷、弱点地方、不舒服、不爽、枯燥就行。
(3)Feedback反馈
Feedback
即时反馈主动型反馈(自己去找) 高手代码(Github、LeetCode、etc.)第一视角直播 学习 被动式反馈(高手给你指点) code review教练看你打,给你反馈
切题四件套
切题四件套:
Clarification (审题) 题意
Possible solution(解题多种可能性) :想所有可能的解法解这个题目
compare(time/space) 比较时空 :从时间、空间复杂度比较几种解题思路optimal(加强) 最优解
Coding(多写)
Test cases(测试) (测试样例)
反复沟通,别题目没看清楚就开始写程序
想所有可能的想法去解,比较不同的时间空间搞最优。
写单元测试再解题也可以,测试样例、加强。
2、五步刷题法(五毒神掌)
刷题第一遍:
5分钟:读题+思考(建议不要超过15分钟)
直接看解法:注意!多解法,比较优劣
背诵、默写好的解法
第二遍:
马上自己写–> LeetCode提交 debug至完成
多种解法比较、体会–>优化!
看时间空间 效率 (执行时间和内存消耗)
第三遍:
过了一天后,再重复做题
不同解法的熟练程度–>专项练习
第四遍:
过了一周:反复回来练习相同题目
对于不熟的题目专项练习。
第五遍:
如果有面试,面试前一周进行恢复式训练
3、小结
小结
职业训练:拆分知识点、刻意练习、反馈
五步刷题法(五毒神掌)
做算法题的最大误区:只做一遍
刻意练习 专题练习 反馈
一遍又一遍进行思维巩固、反复练习 理解 干
熟悉、熟练 肌肉记忆了。