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;
}
};