リート問題クライミング階段

あなたは階段を登っていると仮定します。あなたが屋根に取得する必要がNの順。

たびに、1つまたは2つのステップを登ることができます。どのように多くの異なる方法がそれの屋根に登ることができますか?

注:与えられたnは正の整数です。

例1:

入力:2
出力:2
説明:屋根に登ることができる2つの方法があります。
1.1 + 1次オーダー
2.2オーダ
例2:

入力:3
出力:3
説明:屋根に登ることができる3つの方法があります。
1.1 + 1オーダー+ 1次オーダー
2.1 + 2次オーダー
3.2 + 1次オーダー

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/climbing-stairs
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。



* * @LcのApp = leetcode.cn ID = LANG = Javaの70 * * [70]階段は、 ソリューションの概要*:階段の数がnであると仮定し、我々はの屋根に登るための方法持っている * 1。n = 1のときを場合A1 = 1、 * 2、N = 2、方法(1 + 1; 2)、A2 = 2、 * 3、N = 3、方法(1 + 1 + 1 2 + 1 ; + 2 1)、A3 = 3; * 4、N = 4、方法がある(1 + 1 + 1 + 1 2 + 1 + 1; 1 + 2 + 1; 1 + 1 + 2; 2+ 2)、A4 = 5; * 5.レッツ・要約したものです。私たちはA0 = 1、その後、A0 + = A1、A2をとることができる; A3 = A1 + A2; A4 = A2 + A3; ... * 6モデル準拠階段を登りますフィボナッチ数が、初期設定の微妙な違いがある 7.興味*、あなたはA5をプッシュすることができますが、A4 = 8 + A3に等しくなければなりません * / 再帰 //再帰的な実装で、欠点は、遅い運用効率でありますN = 43アウト操作回 公共int型climbStairs(N-INT){ IF(N - == 0) リターン1; IF(N - == 1) リターン1; IF(== N-2) リターン2。 ; climbStairsは(N - 1)climbStairs +(N - 2)を返す } ループを達成するために 公共のint climbStairsを(N-INT){ IF(。 - - == 1)||(N == 2)(N) N-戻り、 INTを1予備=。 ; //格納previous- INT電流= 2;記憶の//現在の数 のために(INT 3 = I; I <(N + 1); I ++){ int型TMP =現在、の和に、最初の予約の//現在の数主張前者番号 現在+ =事前; 事前= TMP; } 電流を返す; } 著者:Wynn1718 リンクします。https://leetcode-cn.com/problems/climbing-stairs/solution/70-pa-lou-ti- javajie-FA・バイ・wynn1718 / ソース:滞在ボタン(LeetCode) 著者によって予約の著作権。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

  

おすすめ

転載: www.cnblogs.com/wangyu19900123/p/11999869.html