Link: https://oj.leetcode.com/problems/climbing-stairs/
You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
我的思路:Fibonacci 数列。一次过。
Time: O(n)
Note: Return f2, not fn. Since when n = 1, fn = 0, f1= 1.
public class Solution {
public int climbStairs(int n) {
int f1 = 1;
int f2 = 1;
int fn = 0;
for(int i = 2; i <= n; i++){
fn = f1+f2;
f1= f2;
f2 = fn;
}
return f2;
}
}
TODO: Math