509. 斐波那契数
斐波那契数 (通常用 F(n)
表示)形成的序列称为 斐波那契数列 。该数列由 0
和 1
开始,后面的每一项数字都是前面两项数字的和。也就是:
F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1
给定 n
,请计算 F(n)
。
暴力:
class Solution { public: int fib(int n) { if (n <=1) return n; return fib(n-1)+fib(n-2); } };
记忆:
class Solution { public: int help(int n, vector<int>& memo) { if (n < 0) return 0; if (memo[n]!=-1) return memo[n]; if (n<=1) return n; int res = help(n-1,memo) + help(n-2,memo); memo[n] = res; return res; } int fib(int n) { vector<int> memo(n+1,-1); return help(n,memo); } };
dp:
class Solution { public: int fib(int n) { if (n<=1) return n; vector<int> dp(n+1,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) { if (n<=1) return n; int dpi=0,dpi_1=1,dpi_2=0; for(int i = 2; i <= n; i++) { dpi = dpi_1 + dpi_2; dpi_2 = dpi_1; dpi_1 = dpi; } return dpi; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理