当前位置: 首页 > article >正文

剑指 Offer(第2版)面试题 10:斐波那契数列

剑指 Offer(第2版)面试题 10:斐波那契数列

  • 剑指 Offer(第2版)面试题 10:斐波那契数列
    • 解法1:递归
    • 解法2:动态规划
    • 解法3:动态规划 - 空间优化

剑指 Offer(第2版)面试题 10:斐波那契数列

题目来源:21. 斐波那契数列

解法1:递归

代码:

class Solution {
public:
    int Fibonacci(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        return Fibonacci(n-1) + Fibonacci(n-2);
    }
};

复杂度分析:

时间复杂度:O(n)。

空间复杂度:O(n)。

解法2:动态规划

代码:

class Solution {
public:
    int Fibonacci(int 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];
    }
};

复杂度分析:

时间复杂度:O(n)。

空间复杂度:O(n)。

解法3:动态规划 - 空间优化

用 3 个变量就能代替之前的动态规划数组。

代码:

class Solution {
public:
    int Fibonacci(int n) {
        int first = 0, second = 1;
        while(n--)
        {
            int res = first + second;
            first = second;
            second = res;
        }
        return first;
    }
};

复杂度分析:

时间复杂度:O(n)。

空间复杂度:O(1)。


http://www.kler.cn/a/149500.html

相关文章:

  • CTF攻防世界小白刷题自学笔记13
  • Ubuntu配置阿里云docker apt源
  • 量化交易系统开发-实时行情自动化交易-3.4.2.2.Okex交易数据
  • vue请求数据报错,设置支持跨域请求,以及2种请求方法axios或者async与await
  • 比ChatGPT更酷的AI工具
  • 【mysql】使用宝塔面板在云服务器上安装MySQL数据库并实现远程连接
  • 深入理解 Cookie 和 Session 的工作流程
  • 【工业智能】Solutions
  • Android : 异常记录
  • 分布式机器学习、联邦学习、多智能体的区别和联系——一文进行详细解释
  • Mysql中正则表达式Regexp常见用法
  • 直线(蓝桥杯)
  • docker-compose Foxmic dt版
  • P9242 [蓝桥杯 2023 省 B] 接龙数列(dp+最长接龙序列+分类)
  • 什么是关系型数据库?
  • Windows快速找到软件的exe文件路径
  • Golang并发模型:Goroutine 与 Channel 初探
  • 冒泡排序以及改进方案
  • BGP综合实验(IP)
  • 【密码学引论】Hash密码
  • C语言每日一题(40)栈实现队列
  • MVVM 模式与 MVC 模式:构建高效应用的选择
  • 3种在ArcGIS Pro中制作山体阴影的方法
  • C# API 文档自动生成器
  • 关于QProcess子进程导致的当前进程内存持续升高问题
  • 前端量子纠缠 效果炸裂 multipleWindow3dScene