- neetcode
- Introduction to Algorithms Abdul Bari
- LeetCode 2000+ by CodeBitWave
- JavaScript版数据结构与算法
- Grind 75
- 算法讲解 by 左程云
- https://github.com/algorithmzuo/algorithm-journey/tree/main/ppt
- NeetCode路线图
大多数开发者都非常讨厌编程面试。一个主要的原因是,大多数开发者认为他们必须解决数百个问题才能准备好。他们不知道从哪里开始,所以通常随机地解决问题,没有任何计划。
一个月后,他们什么都不记得了。他们尝试解决之前已经解决过的问题。你猜怎么着?他们解决不了。
- 专注于学习模式,而不是解决大量的问题。
- 按照直观的顺序学习新的主题和模式。
- 反复练习——回顾并重新解决问题。
步骤 1
熟悉如何使用大O时间和空间复杂度来评估算法性能。你应该了解以下表示的含义:
- 常数时间 - O(1)
- 对数时间 - O(log n)
- 线性时间 - O(n)
- 线性对数时间 - O(n log n)
- 多项式时间 - O(n^k),其中k是常数
- 指数时间 - O(k^n),其中k是常数
- 阶乘时间 - O(n!)
你还应该对时间复杂度的比较有直观的理解。对于某些问题,最好的解法是指数级的。对于其他问题,我们可以将它们优化为多项式时间。
步骤 2
接下来的步骤是学习基础的数据结构和算法。
你应该涵盖的一些主题包括:
步骤 3
在熟悉了基础知识之后,你应该开始掌握在编码面试中最常见的模式。
下面是一些常见的面试模式(非详尽列表):