从零学习数据结构与算法---基础与课前准备笔记

     这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬  覃超老师的 算法训练营 和  王争老师的 数据结构与算法之美。这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如果有笔误请见谅。很多内容都是出自两位老师课程ppt中的内容。

  一、学习思路

 在学习算法之前,先要明确学习的步骤。下面主要是 覃超老师 算法训练营 总结

精通一个领域

  1. Chunk it up 切碎知识点
    • 庖丁解牛
    • 脉络链接
  2. Deliberate Practicing 刻意练习
  3. Feedback 反馈
  • 职业化运动

  • 基本功是区别业余和职业化选手的根本

     

  • 基础动作的分解训练和反复练习 ——> 最大的误区

Deliberate Practicing

  • 刻意练习 —— 过遍数(五毒神掌)
  • 练习缺陷、弱点地方

    Feedback

  • 即时反馈

     

  • 主动型反馈(自己去找)
    • 高手代码(Github,Leetcode,etc)
    • 第一视角直播
  • 被动式反馈(高手给你指点)
    • code review

切题四件套

  • Clarification
  • Possible Solutions
    • compare (time/space)
    • optimal (加强)
  • Coding(多写)
  • Test cases

五毒神掌

第一遍

  • 五分钟:读题 + 思考
  • 直接看解法:多看几种,比较解法优劣
  • 背诵、默写好的解法

第二遍

  • 马上自己写 ——> Leetcode提交
  • 多种解法比较、体会 ——> 优化!

第三遍

  • 过了一天后,再重复做题
  • 不同解法的熟练程度——>专项练习

第四遍

  • 过了一周后:反复回来练习相同的题目

第五遍

  • 面试前一周恢复性训练

小结

  • 职业训练:拆分知识点、刻意练习、反馈
  • 五步刷题法
  • 做算法题最大的误区:只做一遍

数据结构与算法简单介绍:

数据结构

  • 一维:
    • 基础:数组 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

算法

  • if-else,switch ——> branch
  • for,while loop ——> literation
  • 递归 Recursion (Divide & Conquer ,Backtrace)

所有高级算法或数据结构最后都会转换成以上三种

  • 搜索 Search:深度优先搜索 Depth first search, 广度优先搜索 Breadth first search,A*,etc

     

  • 动态规划 Dynamic Programming

  • 二分查找 Binary Search

  • 贪心 Greedy

  • 数学 Math,几何 Geometry

 

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