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 }