problem

​509. Fibonacci Number​

 solution1: 递归调用

class Solution {
public:
int fib(int N) {
if(N<2) return N;
return fib(N-1) + fib(N-2);
}
};

solution2: 结果只与前两个数字有关。

class Solution {
public:
int fib(int N) {
if(N<2) return N;
int a = 0;
int b = 1;
int sum =0;
for(int i=2; i<=N; i++)//err...
{
sum = a + b;
a = b;
b = sum;
}
return sum;
}
};

solution3: 使用数组类型数据。

 但是不知道哪里有问题,为什么一直没有通过。。。哪位大神看到知道原因的麻烦告知一下下哈~

/*error...
class Solution {
public:
int fib(int N) {
vector<int> dp(N + 1);
dp[0] = 0; dp[1] = 1;
for (int i = 2; i <= N; ++i) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[N];
}
};
*/
/*error。。。
class Solution {
public:
int fib(int N) {
//int f[N+1] = {0};
vector<int> f(N+1);
f[0] = 0;
f[1] = 1;
for(int i=2; i<=N; i++)
{
f[i] = f[i-1] + f[i-2];
}
return f[N];

}
};
*/

 

参考

1. ​​Leetcode_509. Fibonacci Number​​;

2. ​​GrandYang​​;