1、动态规划,迭代
int climbStairs(int n) {
if (n == 1)
return 1;
if (n == 2)
return 2;
int t1 = 1, t2 = 2;
for (int i = 2; i < n; i++) {
t2 = t1 + t2;
t1 = t2 - t1;
}
return t2;
}
时间:O(n) 空间:O(1)
2、递归
时间:O(2^n)
3、直接解递推公式
时间:O(1)
3、矩阵快速幂
需要满足齐次线性递推(部分非齐次先行递推可以转化成齐次线性递推)
时间:O(logn)