leetcode509。フィボナッチ数

leetcode509。フィボナッチ数

質問の語幹

通常F(n)で表されるフィボナッチ数で、形成されるシーケンスはフィボナッチ数列と呼ばれます。数列は0と1で始まり、その後の各番号は前の2つの番号の合計です。つまり、
F(0)= 0、F(1)= 1
F(n)= F(n-1)+ F(n-2)、ここでn> 1
はnになります。F(n)を計算してください。

例1:
入力:2
出力:1
説明:F(2)= F(1)+ F(0)= 1 + 0 = 1

例2:
入力:3
出力:2
説明:F(3)= F(2)+ F(1)= 1 + 1 = 2

例3:
入力:4
出力:3
説明:F(4)= F(3)+ F(2)= 2 + 1 = 3

プロンプト:
0 <= n <= 30

回答

あなたは直接テーブルを打つことができます

class Solution {
    
    
public:
    int fib(int n) {
    
    
        vector<int> fib(31,0);
        fib[0] = 0;
        fib[1] = 1;
        for(int i = 2 ; i < 31 ; ++i){
    
    
            fib[i] = fib[i - 1] + fib[i - 2];
        }
        return fib[n];
    }
};

2つの変数を使用して、隣接する2ビットを格納してスペースを節約することもできます。

class Solution {
    
    
public:
    int fib(int n) {
    
    
        if(n < 2){
    
    
            return n;
        }
        int first = 0;
        int second = 1;
        for(int i = 1 ; i < n ; ++i){
    
    
            int temp = first;
            first = second;
            second = temp + second;
        }
        return second;
    }
};

おすすめ

転載: blog.csdn.net/weixin_43662405/article/details/112209770