1、学习方法

    • 预习
    • 课堂互动

    2、期待效果

    • 职业顶尖级别
    • 一线互联网公司面试offer
    • LeeCode 300+ 的积累

    《异类:不一样的启示录》介绍学习方法

    3、精通领域3步

    • Chunk it up 切碎知识点 (即 庖丁解牛 脉络连接 如脑图 合而分奸之 把知识变为树状结构 人脑不适合记忆孤立的知识)
    • Deliberate Practicing 刻意练习 过遍数 5遍刷题法 练习缺陷、弱点地方
    • Feedback 反馈 及时反馈 主动反馈(自己找) 被动反馈(高手指点)

    4、职业化运动

    • 基本功是区别业余和职业选手的根本
    • 基础动作分解训练和反复练习 - 只练1遍是不行的

    5、技巧

    1. 解题技巧
    • Clarification 审题清晰
    • Possible solutions 所有可能解法,比较时间和空间复杂度 找最优解
    • Coding 多写
    • Test cases 测试样例 要尽量全

      1. <br /> 2. 刷题遍数
    • 第一遍 5分钟:读题+思考;无思路则直接看解法,比较解法优劣;背诵和默写好的解法然后理解

    • 第二遍 马上自己写 -> LeetCode提交代码 -> debug -> 通过;比较写法都写一遍,优化
    • 第三遍 过了一天之后 再重复做题;不同解法熟练程度进行专项练习
    • 第四遍 过了一周之后 再重复做题;不同解法熟练程度进行专项练习
    • 第五遍 面试前一周恢复性训练

    4、数据结构 了解每个数据结构的原理和代码框架

    1. 一维
      • 基础:数组array(string),链表linked list
      • 高级:栈stack,队列queue,双端队列deque,集合set,映射map(hash or map),etc
    2. 二维
      • 树tree,图graph
      • 二叉搜索树binary search tree(red-black tree,AVL),堆heap,并查集disjoint set,字典树Trie,etc
    3. 特殊
      • 位运算Bitwise,布隆过滤器BloomFilter
      • LRU Cache

    image.png

    5、算法 脑海中有每种算法的思想和代码模板

    • 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
    • 数学Match,几何Geometry

    补充

    • 排序
    • 分治
    • 回溯
    • 字符串匹配算法

    image.png

    image.png