Java动态规划LeetCode1137. 第 N 个泰波那契数

这篇具有很好参考价值的文章主要介绍了Java动态规划LeetCode1137. 第 N 个泰波那契数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java动态规划LeetCode1137. 第 N 个泰波那契数,动态规划,算法,java

         方法1:通过动态规划解题,这道题也是动态规划的一道很好的入门题,因为比较简单和容易理解。

代码如下:

public int tribonacci(int n) {
        //处理特殊情况
        if(n==0){
            return 0;
        }
        if(n==1||n==2){
            return 1;
        }
        //定义数组
        int[]dp=new int[n+1];
        //初始化
        dp[0]=0;
        dp[1]=dp[2]=1;

        for(int i=3;i<=n;i++){
            dp[i]=dp[i-1]+dp[i-2]+dp[i-3];
        }
        return dp[n];
    }

        动态规划的解题步骤分为5步

                1.状态表示

                2.状态转移方程

                3.初始化

                4.填表顺序

                5.返回值

        我们一开始的时候要根据题意以及经验判断需要用什么规格的dp表来表示数据的状态,由本题的思路我们可以创建一个一维数组的dp表,初始化一维数组的dp[0] dp[1]和dp[2]。

        根据题目已经给出的状态转移方程 dp[i]=dp[i-1]+dp[i-2]+dp[i-3] ,我们就以从左到右的顺序依次填满一维数组dp表,而填到dp[n]便得到了最终的答案

        方法2:对方法1的内存优化

代码如下:

public int tribonacci(int n){
        //处理特殊情况
        if(n==0){
            return 0;
        }
        if(n==1||n==2){
            return 1;
        }

        //定义变量,实现滚动数组
        int a=0,b=1,c=1,d=0;
        for(int i=3;i<=n;i++){
            d=a+b+c;
            a=b;
            b=c;
            c=d;
        }

        return d;
    }

        根据状态转移方程,要求dp[n]的值只需要前面3个数据的值即可,所以我们一共只需要4个变量便可以实现滚动数组,用a,b,c三个变量表示已知的三个值,用d来接受a+b+c的值,后面再依次更新a,b,c的值,便可以依次获取到后面的值文章来源地址https://www.toymoban.com/news/detail-537604.html

到了这里,关于Java动态规划LeetCode1137. 第 N 个泰波那契数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学会动态规划】第 N 个泰波那契数(4)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后: 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 这道题目不难理解,就是根据题目给的字

    2024年02月16日
    浏览(38)
  • 【学会动态规划】第 N 个泰波那契数(1)

    目录 动态规划怎么学? 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 4. 空间优化 写在最后 学习一个算法没有捷径,更何况是学习动态规划, 跟我一起刷动态规划算法题,一起学会动态规划! 题目链接:1137. 第 N 个泰波那

    2024年02月15日
    浏览(46)
  • 【动态规划专栏】专题一:斐波那契数列模型--------1.第N个泰波那契数

    本专栏内容为:算法学习专栏,分为优选算法专栏,贪心算法专栏,动态规划专栏以及递归,搜索与回溯算法专栏四部分。 通过本专栏的深入学习,你可以了解并掌握算法。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:动态规划专栏 🚚代码仓库:小小unicorn的代码仓库🚚

    2024年02月21日
    浏览(43)
  • 【动态规划刷题 1 】 第N个泰波那契数&& 三步问题

    链接: 第N个泰波那契数 1137 . 第 N 个泰波那契数 泰波那契序列 Tn 定义如下: T0 = 0, T1 = 1, T2 = 1, 且在 n = 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: 输入:n = 4 输出:4 解释: T_3 = 0 + 1 + 1 = 2 T_4 = 1 + 1 + 2 = 4 示例 2: 输入:n = 25 输出:

    2024年02月15日
    浏览(40)
  • 【动态规划】是泰波那契数,不是斐波那契数

    Problem: 1137. 第 N 个泰波那契数 首先我们来解读一下本题的意思🔍 相信读者在看到【泰波那契数】的时候,不禁会联想到【斐波那契数】,它们呢是一对孪生兄弟,这个 泰波那契数 相当于是 斐波那契数 的加强版 我们首先可以来看到这个递推公式 Tn+3 = Tn + Tn+1 + Tn+2 ,读者可

    2024年02月08日
    浏览(48)
  • 【动态规划】:泰波那契模型_解码方法

    朋友们、伙计们,我们又见面了,本专栏是关于各种算法的解析,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构专栏:数据结构 个  人  主  页 :stackY、 C + + 专 栏   :C++ Linux 专 栏  :Linux 目录

    2024年02月19日
    浏览(60)
  • 动态规划专训1——泰波那契数列模型

    动态规划的思想:将一个问题分隔为若干个子问题,完成子问题得到结构再得到最终的答案 动态规划往往解题步骤固定,分为以下几步 1.找出状态表示 2.完成状态转移方程 3.初始化 4.填表顺序 5.返回值 后面三步偏重细节,二解题的核心就在于前两步,所以要想练好动态规划

    2024年04月29日
    浏览(37)
  • 动态规划解决泰波那契数列,爬楼梯最小花费问题

    做题之前我们需要先搞清楚解决动态规划的几个步骤 1 状态表示,准备一个dp表 2 状态转移方程  3 初始化 4 填表 5 返回值 步骤1 状态表示,准备dp表 dp[0] dp[1] dp[2] dp[3] dp[4] = dp[0]+dp[1]+dp[3] 步骤2 状态转移方程表示 dp[i] = dp[i-1]+dp[i-2]+dp[i-3] 步骤3 4 5 都是对代码的细节处理,代码

    2024年02月03日
    浏览(35)
  • LeetCode 509 斐波那契数(动态规划)

     509. 斐波那契数 - 力扣(LeetCode)   斐波那契数  (通常用  F(n)  表示)形成的序列称为  斐波那契数列  。该数列由  0  和  1  开始,后面的每一项数字都是前面两项数字的和。也就是: 给定  n  ,请计算  F(n)  。 【思路】动态规划 动规五部曲: 1.确定dp数组以及下

    2024年02月07日
    浏览(56)
  • (动态规划) 剑指 Offer 10- I. 斐波那契数列 ——【Leetcode每日一题】

    难度:简单 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N) )。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包