LeetCode 70. Climbing Stairs
这是一道利用斐波那切数列求解的题目。求斐波那切数列有比较经典的4种方法
(1)递归法:复杂度太高
(2)迭代法:时间复杂度为
O(n)
O
(
n
)
,需要注意循环的停止条件
(3)矩阵法:复杂度为
O(logn)
O
(
l
o
g
n
)
(4)公式法:复杂度为
O(1)
O
(
1
)
这四种题有空会总结在下面这个链接中:
https://blog.csdn.net/Allenlzcoder/article/details/79560998
此题利用迭代法做。需要说明的是爬楼梯和标准的斐波那切数列在起始条件上不太一样
标准:0,1,1,2,3,5,8,13,21……
此题:0,1,2,3,5,8,13,21……
所以在循环停止条件上要多加注意,认真查数!
class Solution {
public:
int climbStairs(int n) {
int f = 0, g = 1;
if(n == 0)
return f;
else if(n == 1)
return g;
while (n-- > 0) {
g = g + f;
f = g - f;
}
return g;
}
};