problem
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;
完