509. 斐波那契数

1|0509. 斐波那契数

509. 斐波那契数

// [509. 斐波那契数](https://leetcode-cn.com/problems/fibonacci-number/) // 动态规划: 1) 确定DP数组 使用一维数组dp[i]表示第i个数字, 2) 确定递推公式 3) 确定初始状态 4) 确定遍历过程 5) 模拟结果以便于debug // 时间复杂度O(n), 空间复杂度O(n) class Solution { // 完整dp解法 public int fib(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } int[] dp = new int[n + 1]; dp[0] = 0; dp[1] = 1; for (int i = 2; i < n + 1; i ++) { dp[i] = dp[i-1] + dp[i-2]; } return dp[n]; } } // 动态规划,维护了整个状态转移过程, 但是实际上本题只需要两个状态即可 // 时间复杂度O(n), 空间复杂度O(1) class Solution2 { public int fib(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } int dp1 = 0; int dp2 = 1; for (int i = 2; i < n + 1; i ++) { int temp = dp1; dp1 = dp2; dp2 = temp + dp1; } return dp2; } } // 其他解法: 备忘录法, 利用斐波那契通项公式, 矩阵快速幂, 还有利用数组保存了30个项直接返回的 递归一行代码: return n <= 1 ? n : fib(n - 1) + fib(n - 2); // 递归算法: 时间O(2^n), 空间O(n)

__EOF__

本文作者Rocky
本文链接https://www.cnblogs.com/nrocky/p/15972499.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   -Rocky-  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示