outline.png

学习方法

改变学习习惯(不要死磕)。多写多练,但不是每次花很多时间。看高票代码和高质量题解。

Chunk it up 庖丁解牛

  • 数据结构分类
    • 一维
      • 基础:数组 array、链表 linked lis
      • 高级:栈 stack、队列 queue、双端队列 deque、集合 set、map(hash or map)、etc
    • 二维
      • 基础:树 tree、graph 图
      • 高级:二叉搜索树 binary search tree(red-black tree、AV)L、堆 heap、并查集 disjoint set、字典树 Trie、etc
    • 特殊
      • 位运算 Bitwise、布隆过滤器 BloomFilter
      • LRU Cache
  • 算法
    • if-else、switch -> branch
    • for,while loop -> iteration
    • 递归 Recursion(Divide & Conquer,Backtrace )
    • 搜索 Search:深度优先搜索 Depth first search,广度优先搜索 Breadth first search,A*,etc
    • 动态规划 Dynamic Programing
    • 二分查找 Binary Search
    • 贪心 Greedy
    • 数学 Math,几何 Geometry

Deliberate Practicing 刻意练习

  • 分解和反复练习,过遍数,最少刷五遍
  • 练习缺陷、弱点

Feedback 反馈

  • 及时反馈
  • 主动型反馈
    • 高手代码(Github,Leetcode,etc)
    • 第一视角直播
  • 被动式反馈
    • code review

五步刷题法

第一遍

5 分钟:读题和思考。

没有思路,直接看解法,比较解法优劣。

背诵、默认最好的解法。

第二遍

自己写代码,LeetCode 提交验证。

对多种解法比较、体会 -> 优化。

第三遍

过一天,重复做题。

根据不同解法的熟练程度进行专项联系。

第四遍

过一周之后,反复回来练习相同题目。

第 5 遍

面试前一周或者多周恢复性训练。

环境配置

Google 浏览器。

VSCode 配合 LeetCode 插件。

https://leetcode-cn.com、[https://leetcode.com](https://leetcode.com) 。

leetcode-cn.com 和 题解、leetcode.com 和 Discuss board。

中文网站和英文网站的题目除了 -cn,其他都一致。尽量在中文站做完题,再去看国际站的讨论区。