leetcode 爬樓梯 相當於斐波那契數列。

2021-09-12 01:22:52 字數 1019 閱讀 9035

題目:

**假設你正在爬樓梯。需要 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 階 ...