[toc]
算法面试通关40讲 - 前Facebook工程师带你吃透大厂面试题 课程笔记
课程综述
如何事半功倍地学习算法和数据结构
精通一个领域
- Chunk it up(切碎知识点)
- Delibrate practicing(刻意练习)
- Feedback(反馈)
切题四件套
- Clarification
- Possible solutions
- compare(time/space)
- optimal
- Coding
- Test cases
课程内容:
------Data Structure------
Array
Stack/Queue
PriorityQueue(heap)
LinkedList(Single/double)
Tree/Binary Tree
Binary Search Tree
HashTable
Disjoint Set
Trie
BloomFilter
LRU Cache
------Algorithm------
General Coding
In-order/Pre-order/Post-order traversal
Greedy
Recursion/Backtrace
Breadth-first search
Depth-first search
Divide and Conquer
Dynamic Programming
Binary Search
Graph
时间和空间复杂度的计算
递归情况的复杂度计算:大概考虑一下
例:斐波那契(无优化)的时间复杂度:O(2^n)
主定理(Master Theorem)
算法 | 复杂度 |
---|---|
Binary Search | O(log n) |
Binary tree traversal | O(n) |
Optimal sorted matrix search | O(n) |
Merge Sort | O(n log n) |
###如何通过LeetCode来进行算法题目练习
- 坚持、刻意练习
- 练习缺陷、弱点地方(!)
- 不舒服,不爽、枯燥,说明跳出了舒适圈
做题方法:切题四件套
不要看到题就开始做,要在心中想好合适的解法。考虑好时间复杂度。
要在Discussion和Solutions中寻求反馈。
关键
- 现在就动手
- 练习 - 坚持 - 机会留给有准备的人
- 每节课的课后作业