【数据结构与算法】极客算法训练营 - 1、算法数据结构与算法总览

数据结构与算法总览

文章目录

  • 数据结构与算法总览
  • 1、职业训练:拆分知识点、刻意练习、反馈
    • (1)Chunk it up 切碎知识点
      • 数据结构
    • 算法
    • (2)Deliberate Practicing 刻意练习
    • (3)Feedback反馈
  • 2、五步刷题法(五毒神掌)
    • 刷题第一遍:
    • 第二遍:
    • 第三遍:
    • 第四遍:
    • 第五遍:
  • 3、小结

记录 极客算法训练营

  • 职业训练:拆分知识点、刻意练习、反馈

  • 五步刷题法(五毒神掌)

  • 做算法题的最大误区:只做一遍

如何有效学习数据结构与算法

预习、互动、练习、分享

1、职业训练:拆分知识点、刻意练习、反馈

如果想要精通一个领域:分为三步走

  • Chunk it up 切碎知识点

  • Deliberate Practicing 刻意练习

  • Feedback 反馈(分为主动式反馈和被动式反馈)

一遍完全不够的 练习多遍

(1)Chunk it up 切碎知识点

  • 庖丁解牛
  • 脉络连接

【数据结构与算法】极客算法训练营 - 1、算法数据结构与算法总览_第1张图片

tree 树

连接 拆分 整合

每一个点突破 、 练好的基本功

分解数据结构和算法

数据结构

【数据结构与算法】极客算法训练营 - 1、算法数据结构与算法总览_第2张图片

一维:

  • 基础:数组 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, 布隆过滤器 BloomFilter
  • LRU Cache 最近最少使用 (least recently used)

数据结构
注意:了解每个数据结构的原理和代码框架

算法

【数据结构与算法】极客算法训练营 - 1、算法数据结构与算法总览_第3张图片

  • 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

注意:在头脑中回忆上面每种算法的思想和代码模板
算法

算法脑图

算法脑图

数据结构脑图

数据结构脑图

动手绘制一份数据结构与算法脑图

(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、小结

小结

  • 职业训练:拆分知识点、刻意练习、反馈

  • 五步刷题法(五毒神掌)

  • 做算法题的最大误区:只做一遍

刻意练习 专题练习 反馈

一遍又一遍进行思维巩固、反复练习 理解 干

熟悉、熟练 肌肉记忆了。

你可能感兴趣的:(数据结构与算法)