假設你正在爬樓梯。需要 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 階
解法:列出排列數,會發現是楊輝三角的排列數和,這樣就是斐波那契數列了;1 2 3 5 8 13,跟着n return結果就行。
class Solution {
public:
int climbStairs(int n) {
if(n==1||n==2)return n;
int pre=1,aft=2;
int temp;
for(int i=0;i<n-2;i++){
temp=pre+aft;
pre=aft;
aft=temp;
}
return aft;
}
};