題目:
**假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意:給定 n 是乙個正整數。
示例 1:
輸入: 2
輸出: 2
解釋: 有兩種方法可以爬到樓頂。
1 階 + 1 階
2 階示例 2:
輸入: 3
輸出: 3
解釋: 有三種方法可以爬到樓頂。
1 階 + 1 階 + 1 階
1 階 + 2 階
2 階 + 1 階**
浦發春招面試題之一
一開始的想法是遞迴。因為遞迴一直不熟,所以用的方法不太好,如下:
static int a=0;
class solution
else if(n==0)
a++;
return a;
}};
用到了全域性變數,來統計多少次減到0,但是不知道為什麼leetcode編譯出來是輸入3,輸出3,但是一提交就變成了5了;
然後就是想了其實不用設定全域性變數。只要如下
class solution
if (n == 2)
return climbstairs(n - 1) + climbstairs(n - 2);
}};
其實只要分成兩步乙個是n-1,乙個是n-2,然後剩下1或則2的時候返回他們的可能性,再相加就可以了。但是但測試為45時會超出時間。因為是遞迴太消耗時間
於是仔細看這題,就是斐波那契啊。所以想到非遞迴的方法如下
class solution
};
相當於多少次就是斐波那契數列的第幾個。為什麼是斐波那契可以這麼想,因為第n階可以是n-1階+1階所以包含n-1階的次數,還可以是n-2階+2階,還包含n-2階的次數。所以是n-1階的次數+n-2階的次數之和,所以為斐波那契 leetcode 爬樓梯問題
爬樓梯問題 每一次可以選擇爬1層或者爬2層。求爬n層樓梯有幾種選擇 1.動態規劃 爬n層樓梯的選擇為f n 那麼f n f n 1 f n 2 2.尾遞迴,比直接遞迴的好處是不需要記錄本次遞迴前的函式狀態,時間消耗少。public class climbstairs return dp n publ...
LeetCode筆記 70爬樓梯
題目 假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階示例 2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂...
leetcode 動態規劃 爬樓梯
假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例 1 輸入 2輸出 2解釋 有兩種方法可以爬到樓頂。1.1 階 1 階 2.2 階示例 2 輸入 3輸出 3解釋 有三種方法可以爬到樓頂。1.1 階 ...