Outliers

outliers.png
中文名字翻译为《异类:不一样的成功启示录》,主要结论是:
精通一个领域,主要分三步

1. Chunk it up 切碎

  1. 把知识看成一棵树
  2. 主干和枝叶上都要挂靠上知识点

    2. Deliberate Practicing 刻意练习

  • 过遍数(五毒神掌,五遍以上)
  • 练习缺陷、弱点

    3. Feedback 反馈

  • 主动反馈(自己去找)

    • 高手代码(github、leetcode)
    • 第一视角直播
  • 被动反馈(请高手指点)

    • codeReview
    • 教练看你打,给你反馈

      刷题技巧

      切题四件套

  • clarification

    • 反复沟通
    • 确保理解
  • possible solutions
    • 找到所有的解法
    • 比较(时间复杂度/空间复杂度)并找到最佳
  • coding
  • test cases

    五毒神掌

  • 第一遍

    • 5分钟:读题+思考
    • 15分钟超时后还没有思路直接看解法,比较多种解法优劣
    • 背诵、默写好的解法
  • 第二遍
    • 马上自己写
    • leetcode提交
    • 多种解法的比较、优化
  • 第三遍
    • 过1天后重复
  • 第四遍
    • 过7天后重复
  • 第五遍

2、DFS、回溯、分治法必练题(含答案).pdf

3、动态规划必练题(含解法).pdf

算法进阶自练题.pdf

数据结构分解

一维数据结构

基础

数组 array

链表 linked list

高级

栈 stack

先进后出

队列 queue

先进先出

双端队列 deque(double-ended queue)

集合 set

映射 map

二维数据结构

一维数据结构上泛化而来

基础

树 tree

图 graph

高级

在树的基础上加了很多判断/约定条件

二叉搜索树 binary search tree

根节点大于左子树且小于右子树的全部节点,即相对有序的一棵二叉树

  • 红黑树 red-black tree
  • AVL

    堆 heap

    并查集 disjoint set

    字典树 trie

    特殊数据结构

    位运算 bitwise

    布隆过滤器 bloom filter

    LRU Cache

    数据结构.xmind

    算法分解

    基础

    高级算法的根本都是由基础的三部分组成

    branch 分支

  • if/else

  • switch/case

    iteration 迭代

  • for

  • while

    recursion 递归

  • Divide&Conquer

  • Backtrace

    高级

    search 搜索

  • DepthFirstSearch 深度优先搜索

  • BreadthFirstSearch 广度优先搜索
  • A* 启发式搜索

    dynamicProgramming 动态规划

    binarySearch 二分查找

    greedy 贪心算法

    Math 数学 Geometry几何

    算法脑图.xmind