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?
代码如下(方法一:超时):
1 public class Solution { 2 public int climbStairs(int n) { 3 if(n==1||n==2||n==3) 4 return n; 5 6 return climbStairs(n-1)+climbStairs(n-2); 7 } 8 }
方法二:AC
1 public class Solution { 2 public int climbStairs(int n) { 3 if(n==1||n==2) 4 return n; 5 6 int num1=1,num2=2,sum=0; 7 for(int i=3;i<=n;i++) 8 { sum=num1+num2; 9 num1=num2; 10 num2=sum; 11 } 12 return sum; 13 } 14 }
浙公网安备 33010602011771号