【leetcode】 70 爬楼梯

tech2024-11-10  16

解法一    一个循环

n的情况怎么走方法数11121+1 或 2231+1+1 或 1+2 或 2+13nnf(n-1) + f(n-2)

不可人肉列举,第n阶台阶只能从第n-1阶或n-2阶上来,所以f(n) = f(n-1) + f(n-2)。

递归(从终点开始往前求),时间复杂度高。正向计算即可:

class Solution { public: int climbStairs(int n) { if (n < 3) return n; int f1 = 1, f2 = 2, fn = 3; for (int i = 3; i <= n; i++) { fn = f2 + f1; f1 = f2; f2 = fn; } return fn; } };

 

 

 

 

 

 

最新回复(0)