精通一个领域

  1. 切碎知识点
  2. 刻意练习 (最大误区,一遍是远远不够的)
    1. 过遍数 (五毒神掌)
    2. 练习缺陷、弱点地方
    3. 不舒服、不爽、枯燥
  3. 即时反馈
    1. 主动型反馈(自己去找)
    2. 被动式反馈

刷题技巧

切题四件套

Clarification

Possible solutions (所有可能的解决都过一遍)

  1. compare (time/space)
  2. optimal (加强)

Coding (多写)

Test (测试)

五毒神掌

刷题第一遍

  • 5分钟: 读题 + 思考
  • (没有思路) 直接看解法:注意! 多解法,比较解法优劣(背诵,记录即可)
  • (有思路)直接写

刷题第二遍

  • 马上自己写 —> LeetCode提交
  • 多种解法比较

刷题第三遍

  • 过一天后,再重复做题

刷题第四遍

  • 过一周之后,再重复做题

刷题第五遍

  • 面试前一周前恢复性训练

数据结构

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

算法

找重复单元,化繁为简

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

注意: 在头脑中回忆上面每种算法的思想和代码模板