https://zhuanlan.zhihu.com/p/349940945
以下8个门类是面试中最常考的算法与数据结构知识点。
排序类(Sort):
- 基础知识:快速排序(Quick Sort), 归并排序(Merge Sort)的原理与代码实现。需要能讲明白代码中每一行的目的。快速排序时间复杂度平均状态下O(NlogN),空间复杂度O(1),归并排序最坏情况下时间复杂度O(NlogN),空间复杂度O(N)
- 入门题目:
- Leetcode 148. Sort List
- Leetcode 56. Merge Intervals
- Leetcode 27. Remove elements
- 进阶题目:
- Leetcode 179. Largest Number
- Leetcode 75. Sort Colors
- Leetcode 215. Kth Largest Element (可以用堆的解法替代)
- Leetcode 4. Median of Two Sorted Arrays
注意:后两题是与快速排序非常相似的快速选择(Quick Select)算法,面试中很常考
链表类(Linked List):
- 基础知识:链表如何实现,如何遍历链表。链表可以保证头部尾部插入删除操作都是O(1),查找任意元素位置O(N)
- 基础题目:
- Leetcode 206. Reverse Linked List
- Leetcode 876. Middle of the Linked List
注意:快慢指针和链表反转几乎是所有链表类问题的基础,尤其是反转链表,代码很短,建议直接背熟。
- 进阶题目:
- Leetcode 160. Intersection of Two Linked Lists
- Leetcode 141. Linked List Cycle (Linked List Cycle II)
- Leetcode 92. Reverse Linked List II
- Leetcode 328. Odd Even Linked List
堆(Heap or Priority Queue)、栈(Stack)、队列(Queue)、哈希表类(Hashmap、Hashset):
- 基础知识:各个数据结构的基本原理,增删查改复杂度。
- Queue题目:
- Leetcode 225. Implement Stack using Queues
- Leetcode 346. Moving Average from Data Stream
- Leetcode 281. Zigzag Iterator
- Leetcode 1429. First Unique Number
- Leetcode 54. Spiral Matrix
- Leetcode 362. Design Hit Counter
- Stack题目:
- L