熟悉常见复杂度量级:O(1)、O(log n)、O(n)、O(n log n)、O(n²)。
O(1)
O(log n)
O(n)
O(n log n)
O(n²)
1. 时间复杂度
判题机大约 1 秒执行 1e8 次运算。
1e8
// O(1) int a, b; cin >> a >> b; if (a > b) { } // O(n) for (int i = 1; i < n; i++) { } // O(n^2) for (int i = 1; i < n; i++) { for (int j = 1; j < n; j++) { } } // O(nm) for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { } }
2. 空间复杂度
常见空间复杂度:O(1)、O(n)、O(n²) 等。
n
递推:在给定初始条件下,已知前一项或前几项求后一项的过程。
斐波那契数列递推
// 递推法 long long fib[100] = {0, 1, 1}; // 第 1 项和第 2 项为 1 for (int i = 3; i <= 92; i++) { // 从第 3 项开始递推 fib[i] = fib[i - 1] + fib[i - 2]; // 递推式 } // 迭代法 long long a = 1, b = 1, c; for (int i = 1; i <= 92; i++) { c = a + b; // 保存中间状态 a = b; b = c; }