[LeetCode]70. 爬楼梯(java实现)斐波拉契数列
1. 题目
2. 读题(需要重点注意的东西)
思路:
当走到第 i 阶(i > 2)时,我们可以从第i - 1阶跳过来,也可以从 i - 2 阶跳过来,因此走到第 i 阶时的方案数为第i - 1阶的方案数加从第i-2阶的方案数,即f[i] = f[i-1] + f[i-2]
,是一个斐波拉契数列;
由于我们只需要前两项的和,因此可以用滚动数组优化空间,只保留前两个数。
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public int climbStairs(int n) {
int a = 1,b = 1;
while(--n != 0){
int c = a + b;
a = b;
b = c;
}
return b;
}
}
可能存在的问题:
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- dp