509. 斐波那契数
https://leetcode.cn/problems/fibonacci-number/
// 递归的写法 // class Solution { // public: // int fib(int n) { // if (n==0) { // return 0; // } // if (n==1) { // return 1; // } // return fib(n-1) + fib(n-2); // } // }; // 时间:O(n), // 空间:O(n), // 0 1 2 3 4 5 // 0 1 1 2 3 5 // 两个指针 // a=0, b=1; sum =1 n=2 // a=1, b= sum =1 //sum = // 优化 时间:O(n), 空间:O(1) // class Solution { // public: // int fib(int n) { // if (n==0) { // return 0; // } // if (n==1) { // return 1; // } // int a = 0; // int b = 1; // int sum = 0; // for (int i = 2; i <=n; i++) { // sum = a + b; // a = b; // b = sum; // } // return sum; // } // }; //dp数组思路 // 1,确定dp数组及下标含义 // 2,确定递推公式 // 3,dp数组初始化 // 4,确定遍历顺序 // 5,打印dp数组 // 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]; // } // }; class Solution { public: int fib(int n) { vector<int>dp(n+1); dp[0] = 0; dp[1] = 1; int sum = 0; for (int i=2; i<=n; i++) { sum = dp[0]+dp[1]; dp[0] = dp[1]; dp[1] = sum; } return sum; } };