【LeetCode通关全记录】509. 斐波那契数
2021/10/20 23:16:08
本文主要是介绍【LeetCode通关全记录】509. 斐波那契数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【LeetCode通关全记录】509. 斐波那契数
题目地址:509. 斐波那契数
解法:记忆化搜索(动态规划+状态压缩)
这道题其实最简单的解法是递归,大家应该也都会写,但是递归99%会TLE,所以需要找点省时间的办法。
由于每一个斐波那契数都可以用它的前两个数得出,所以只需要把前两个数存储下来然后循环迭代对应的次数即可求出答案。这其实就是动态规划的一种变体,也可以说是一种“记忆化搜索”,建议看这个:动态规划套路详解,讲的非常非常详细。
当然,这题因为没有涉及求最值(最优子结构),所以不算完整意义上的动态规划,不过和1137一起拿来当动态规划的入门题、跟着前面提到的文章一步一步推出这个空间复杂度为O(1)的解法是再合适不过了。
func fib(n int) int { if n == 0 { return 0 } if n == 1 { return 1 } pre, cur := 0, 1 for i := 2; i <= n; i++ { j := pre + cur pre = cur cur = j } return cur }
执行用时: 0 ms(超过100%的Golang提交记录)
内存消耗: 1.9 MB(超过100%的Golang提交记录)
时间复杂度:O(n),除了求0和1之外都需要遍历n - 1
次才能计算出答案;
空间复杂度:O(1),只使用了常数个数的存储空间。
这篇关于【LeetCode通关全记录】509. 斐波那契数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享