本题目一共有三种思路
方法一:递归
方法二:迭代
class Solution { public int climbStairs(int n) { int[] arr=new int[n+1]; if(n==1||n==2){ return n; } arr[1]=1; arr[2]=2; for(int i=3;i<=n;i++){ arr[i]=arr[i-1]+arr[i-2]; } return arr[n]; } }
方法三:动态规划 动态数组
class Solution { public int climbStairs(int n) { if(n<=2){ return n; } int[] arr=new int[3]; arr[0]=1; arr[1]=2; for(int i=2;i<n;i++){ arr[i%3]=arr[(i-1)%3]+arr[(i-2)%3]; } return arr[(n-1)%3]; } }