Leetcode-Climbing Stairs

LiBlog發表於2014-11-29

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?

Analysis:

d[i] = d[i-1]+d[i-2]. i steps is the way of reaching i-1 steps + the way of reaching i-2 steps.

Solution:

 1 public class Solution {
 2     public int climbStairs(int n) {
 3         if (n==0) return 0;
 4         if (n==1) return 1;
 5         if (n==2) return 2;
 6     
 7         int first = 1;
 8         int second = 2;
 9         for (int i=3;i<=n;i++){
10             int newVal = first+second;
11             first=second;
12             second = newVal;
13         }
14 
15         return second;
16         
17     }
18 }