leetcode70-爬樓梯
阿新 • • 發佈:2018-11-19
假設你正在爬樓梯。需要 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 階
思路:斐波那契函式求解
遞迴:(在leetcode中超出時間限制)
public int climbStairs(int n) { if(n < 1) return 0; if(n == 1) return 1; if(n == 2) return 2; return climbStairs(n - 2) + climbStairs(n - 1); }
迭代:
public int climbStairs(int n) { if(n == 1) return 1; if(n == 2) return 2; if(n < 1) return 0; int temp1 = 1; int temp2 = 2; int result = 0; for(int i = 3; i <= n ; i++){ result = temp1 + temp2; temp1 = temp2; temp2 = result; } return result; }