动态规划攻略之:第 N 个泰波那契数

247 阅读1分钟

「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战

题目

泰波那契序列 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
输出:1389537

提示:

  • 0 <= n <= 37
  • 答案保证是一个 32 位整数,即 answer <= 2^31 - 1。

解题思路

根据题意可知,本题可使用动态规划的思路来解答此题。 推导过程如下:

  • 定义状态:T[i] 表示泰波那契数列的第 i 个数字;
  • 状态转移方程:T(N) = T(N - 1) + T(N - 2) + T(N 3), 其中 N >= 3;
  • 初始条件: T(0) = 0, T(1) = 1, T(2) = 1;

代码实现

class Solution {
    public int tribonacci(int n) {
        int[] arr = new int[38];
        arr[0] = 0;
        arr[1] = 1;
        arr[2] = 1;

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

        return arr[n];
    }
}

最后

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

**往期文章:

请你喝杯 ☕️ 点赞 + 关注哦~

  1. 阅读完记得给我点个赞哦,有👍 有动力
  2. 关注公众号--- HelloWorld杰少,第一时间推送新姿势

最后,创作不易,如果对大家有所帮助,希望大家点赞支持,有什么问题也可以在评论区里讨论😄~**