070J. Climbing Stairs
https://leetcode.com/problems/climbing-stairs/
Method Fibonacci:
这个题说白是一个斐波那契数列。但是不好直接想到。
这样想:
到第 i steps 有多少种方法呢?有两种,一个是从
i - 1 跨一步上来,一个是从 i - 2 跨两步上来。
所以总的步数就是 f(i - 1) + f(i - 2). 因此这就是一个
斐波那契数列。
class Solution {
public int climbStairs(int n) {
if(n == 1) return 1;
int minus1 = 2;
int minus2 = 1;
int cur = 2;
for(int i = 3; i < n + 1; i++){
cur = minus1 + minus2;
minus2 = minus1;
minus1 = cur;
}
return cur;
}
}
Last updated
Was this helpful?