假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是一個正整數。
示例 1:
輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 階 + 1 階 2. 2 階
示例 2:
輸入: 3 輸出: 3 解釋: 有三種方法可以爬到樓頂。 1. 1 階 + 1 階 + 1 階 2. 1 階 + 2 階 3. 2 階 + 1 階
思路:可以這樣想,n個台階,一開始可以爬 1 步,也可以爬 2 步,那么n個台階爬樓的爬樓方法就等於 一開始爬1步的方法數 + 一開始爬2步的方法數,這樣我們就只需要計算n-1個台階的方法數
和n-2個台階方法數,同理,計算n-1個台階的方法數只需要計算一下n-2個台階和n-3個台階,計算n-2個台階需要計算一下n-3個台階和n-4個台階……

class Solution { public int climbStairs(int n) { if(n==1)return 1; int sum[]=new int[n+1]; sum[0]=0;sum[1]=1;sum[2]=2; for(int i=3;i<=n;i++){ sum[i]=sum[i-2]+sum[i-1]; } return sum[n]; } }
