01 数据结构与算法总览
1.数据结构
一维
- 基础:数组 array (string),链表 linked list
- 高级:栈 stack, 队列 queue,双端队列 deque,集合 set,映射 map (hash or map),etc
二维
- 基础:树tree,图 graph
- 高级:二叉搜索树 binary search tree (red-black tree, AVL),堆 heap,并查集 disjoint set,字典树 Trie
特殊
- 位运算 Bitwise,布隆过滤器 BloomFilter
- LRU Cache
2.算法
- if-else, switch → branch
- for, while loop → iteration
- 递归 Recursion(Divide & Conquer, Backtrace)
- 搜索 Search:DFS, BFS, A*
- 动态规划 Dynamic Programming
- 二分查找 Binary Search
- 贪心 Greedy
- 数学 Math, 集合 Geometry
3.如何做题
3.1 切题四件套
- Clarification:看清题目
- Possible solutions:想到所有可能的想法,都过一遍
- compare (time / space) :对比事项复杂度和空间复杂度
- optimal
- Coding:写代码
- **Test cases **: 多写写测试样例
3.2 刷题(五毒神掌)
- 第一遍刷题
- 5分钟:读题 + 思考
- 直接看解法:注意!多解法,比较解法优劣
- 背诵、默写好的解法
- 第二遍刷题:
- 立即自己写 → LeetCode上提交
- 多种解法比较、体会 → 优化!
- 第三遍刷题
- 过了一天后,再重复做题
- 不同解法的熟练程度 → 专项练习
- 第四遍刷题
- 过了一周:反复回来练习相同题目
- 第五遍刷题
- 面试前一周,恢复性训练
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment