算法训练营01-学习总览

文章目录

学习笔记

  1. chunk it up 切碎知识点
  2. practice it 刻意练习
  3. feedback 反馈: 分为主动反馈和被动反馈

从大到小掌握,
将任何领域学习的治理学习抽象成一个语法树,了解最基本的枝干,然后将具体的知识点再挂到这些枝干上面,在学习的过程中,每学习一个知识点,都要知道他应该被挂到哪个枝干上面。

数据结构分类,要对着脑图讲出特点

  1. 一维数据结构
    1. 基础型:数组,链表
    2. 高级:stack,queue,dequeue,set,map
  2. 二维数据结构
    1. 基础: tree,graph
    2. 高级:binary search tree, red-black tree,AVL, heap(堆),并查集(disjoint set), 字典树Trie,
  3. 特殊的数据结构
    1. 位运算Bitwise,布隆过滤器BloomFilter
    2. LRU Cache

算法分类

  1. 基础分类
    1. if-else,switch-branch
    2. for loop
    3. recursion 递归
  2. 高级分类
    1. 搜索search: dfs(deep first search),bfs(bread first search),A*,
    2. 动态规划 Dynamic Programming
    3. 二分查找 Binary Search
    4. 贪心算法 Greedy
    5. 数学Math,几何Geomety

在头脑中熟记没种算法的思想和代码模板,这个要TODO来看

根本是找到重复单元

数据结构脑图
算法脑图

一遍肯定不够,要多次进行专项练习

  1. 五毒神掌
  2. 练习缺陷,弱点的地方

切题四件套

  1. clarification 确认问题边界
  2. possible solutions 想到的所有的可能的想法过一遍,比较对应的时间,空间复杂度,找出最优的方法
  3. 编写代码
  4. 进行测试用例

五毒神掌,一个题目做5遍

  1. 第一遍,5分钟思考读题, 没有思路的话, 直接看解法(比较不同解法的优劣), 背诵和默写所有的解法,参考国际站来看
  2. 立刻写代码,知道leetcode提交直到通过
  3. 24小时之后,重新做一遍,如果有不熟练的进行专项练习
  4. 一周之后重新练习,如果有不熟练的进行专项练习
  5. 面试前一周进行练习学习

代码的效率的提升方式

  1. 提升数据维度
  2. 空间换时间

技巧

  1. 一定要先把题目整清楚,问问边界case,数据规模等问题,可以更好的理解这个问题,有时候上来就会跳到第二个环节,冷静
  2. 想想方案,没有明确思路的话,可以试试穷举,迭代,借用数组,栈,队列,双端队列,优先队列,大顶堆,小顶堆这些是不是可以使问题变得简化
  3. 不要最求最好的思路,看看能否把问题稍微简化一些处理,就是逻辑上简单一些,可能时间复杂度更高的这种情况容器装水,这个就是一个经典的例子,没有必要非要精简到一定的程度
  4. 考虑初始的数据模型,初始条件
  5. 做完后简单聊一下时间复杂度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值