[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 SearchO(log n)
Binary tree traversalO(n)
Optimal sorted matrix searchO(n)
Merge SortO(n log n)

###如何通过LeetCode来进行算法题目练习

  • 坚持、刻意练习
  • 练习缺陷、弱点地方(!)
  • 不舒服,不爽、枯燥,说明跳出了舒适圈

做题方法:切题四件套

不要看到题就开始做,要在心中想好合适的解法。考虑好时间复杂度。

要在Discussion和Solutions中寻求反馈。

关键

  • 现在就动手
  • 练习 - 坚持 - 机会留给有准备的人
  • 每节课的课后作业

理论讲解 + 面试题实战

数组 & 链表

面试题