栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode刷题笔记第509题:斐波那契数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode刷题笔记第509题:斐波那契数

LeetCode刷题笔记第509题:斐波那契数

想法一:
递归
斐波那契数除了第一个和第二个数为1,其余所有数均为其前两个数之和,通过递归获得相对输入的斐波那契数。时间复杂度:O(2^n),空间复杂度:O(n)。

class Solution:
    def fib(self, n: int) -> int:
        if n == 0:
            return 0
        elif n == 1 or n == 2:
            return 1
        else:
            return self.fib(n-1) + self.fib(n-2)

想法二:
动态规划
在动态规划中要注意三点:

    最优子结构。边界状态转移公式
    参照以上三点构建动态规划方法
    LeetCode中斐波那契数从0开始,其边界也是从0开始,之后n等于1或n等于2的值为1。斐波那契数的最优子结构是其前两个数相加。状态转移方程为前两个和为第三个的值。时间复杂度:O(n),空间复杂度:O(1)。
class Solution:
    def fib(self, n: int) -> int:
        if n < 2:
            return n

        p = 0
        q = 1
        r = 1
        while r < n:
            p, q = q, p + q
            r += 1
        return q
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/732810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号