【代码随想录day 32】 力扣 509.斐波那契数列

视频讲解:https://www.bilibili.com/video/BV1f5411K7mo/?vd_source=a935eaede74a204ec74fd041b917810c

文档讲解:https://programmercarl.com/0509.斐波那契数.html#思路

力扣题目:https://leetcode.cn/problems/fibonacci-number/

动归五步法:

  1. 确定dp[i]的含义:表示第i+1个斐波那契数
  2. 确定递推公式:dp[i] = dp[i-1] + dp[i - 2];
  3. 初始化dp:dp0 = 1; int dp1 = 1;
  4. 遍历顺序:从前往后依次遍历
  5. 打印dp数组,便于调试
    可以设定一个数组来存储斐波那契数列,简单点也可以只用三个数循环更新,因为我们只需要前两个数来计算第三个数,所以设置dp0,dp1,sum,从i=2时加到i=n-1时sum就表示dp[n-1],也就是第n个斐波那契数。
cpp 复制代码
class Solution {
public:
    int fib(int n) {
        //1.确定dp[i]含义:第i个斐波那契数列的数值
        //2.确定递推公式:dp[i] = dp[i-1] + dp[i - 2];
        //3.初始化dp
        int dp0 = 1;
        int dp1 = 1;
        int sum;
        if(n == 0)
        {
            return 0;
        }
        if(n == 2 || n == 1)
        {
            return 1;
        }
        //4.遍历顺序
        for(int i = 2; i < n ; ++i)
        {
            //求的是dp[i+1],n是从1到n,dp[i]是从0到i
            sum = dp0 + dp1;
            dp0 = dp1;
            dp1 = sum;
        }
        return sum;
    }
};
相关推荐
Miraitowa_cheems8 分钟前
LeetCode算法日记 - Day 104: 通配符匹配
linux·数据结构·算法·leetcode·深度优先·动态规划
程序员东岸25 分钟前
从零开始学二叉树(上):树的初识 —— 从文件系统到树的基本概念
数据结构·经验分享·笔记·学习·算法
甄心爱学习1 小时前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
爪哇部落算法小助手2 小时前
每日两题day44
算法
不穿格子的程序员3 小时前
从零开始写算法——二分-搜索二维矩阵
线性代数·算法·leetcode·矩阵·二分查找
程序员小远3 小时前
软件测试之bug分析定位技巧
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
Kuo-Teng3 小时前
LeetCode 19: Remove Nth Node From End of List
java·数据结构·算法·leetcode·链表·职场和发展·list
Kuo-Teng4 小时前
LeetCode 21: Merge Two Sorted Lists
java·算法·leetcode·链表·职场和发展
2301_800399724 小时前
stm32 printf重定向到USART
java·stm32·算法
顾安r5 小时前
11.15 脚本算法 加密网页
服务器·算法·flask·html·同态加密