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?
Subscribe to see which companies asked this question
public class Solution { public int climbStairs(int n) { if(n==1) return 1; if(n==2) return 2; return climbStairs(n-1) + climbStairs(n-2); } }
递归,结果超时。
遂动态规划。
1 public class Solution { 2 public int climbStairs(int n) { 3 if(n < 4) return n; 4 int a = 2, b = 3, c=5; 5 for(int i = 4; i <n;i++){ 6 c = a + b; 7 a = c - a; 8 b = c; 9 c = a + b; 10 } 11 return c; 12 } 13 }