1、重点
算法复杂度:空间、时间
算法思维:贪心、二分、动态规划
常见数据结构
1-1、算法复杂度
- 什么是复杂度
- 时间复杂度
- 空间复杂度
1-1-1、什么是算法复杂度?
- 程序执行时需要的计算量(cpu)和内存空间(和代码是否简洁无关)
- 复杂度是数量级(O)(方便记忆、推广),不是具体的数字
- 一般针对一个具体的算法,而非一个完善的系统
1-1-2、时间复杂度 - 程序执行时需要的计算量(CPU):
- O(1):“可数的”,和输入量无关,计算一次—— 一次就够(数量级)
- O(logn):“对数”,输入量越大,计算量越趋于平缓——数据量的对数(数量级)控制在O(logn)级别非常好
- O(n):输入量多少计算量多少——和传输的数据量一样(数量级)控制在O(n)基本
- O(nlogn):输入量越大,计算量越明显的增大——数据量 * 数据量的对数(数量级)
- O(n^2):输入量,计算量是输入量的平方——数据量的平方(数量级)算法基本不可用
1-1-3、空间复杂度 - 程序执行时需要的内存空间:
- O(1)有限的、可数的空间(数量级)
- O(n)和输入的数据量相同的空间(数量级)
O(logn)、O(nlogn)、O(n^2)在空间复杂度中不常见
注:前端领域重时间轻空间,客户端空间一般是够用的
1-2、划重点:
- 算法复杂度是学习算法的基础,非常重要
- 复杂度是数量级,用O(…)表示,内部是一个函数表达式
- 前端开发:重时间,轻空间
2、数据结构
3、算法
- 二分
- 贪心
- 动态规划