LeetCode 1137. 第 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
输出:1389537

提示:

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

题解:

一、 暴力递归

class SolutionrTibonacci {

    public int tribonacci(int n) {
        //terminator
        if (n == 0) {
            return 0;
        }

        if (n == 1) {
            return 1;
        }

        if (n == 2) {
            return 1;
        }
        //process logic
        //drill into
        return tribonacci(n-3)+tribonacci(n-2) +tribonacci(n-1);
        //reverstate;
    }
}

自己一心递归,依旧超时。

二、记忆化搜索

class SolutionrTibonacci {
    private int [][][]arr = new int[38][38][38];
    public int tribonacci(int n) {
        //terminator
        if (n == 0) {
            return 0;
        }

        if (n == 1) {
            return 1;
        }

        if (n == 2) {
            return 1;
        }
        if(arr[n-3][n-2][n-1]!=0){
            return arr[n-3][n-2][n-1];
        }
        //process logic
        //drill into
        return arr[n-3][n-2][n-1] = tribonacci(n-3)+tribonacci(n-2) +tribonacci(n-1);
        //reverstate;
    }
}

记忆化搜索,对已经计算过的结果不在重复计算。可以对递归进一步的优化

三、 dp

呵呵
原文地址:https://www.cnblogs.com/jiazhiyuan/p/13307903.html