N-th Tribonacci Number | LeetCode # 1137

The Tribonacci sequence Tn is defined as follows: 

T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0.

Given n, return the value of Tn.

Constraints

  • 0 <= n <= 37
  • The answer is guaranteed to fit within a 32-bit integer, ie. answer <= 2^31 - 1.

Example

Input: n = 4
Output: 4
Explanation:
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4

Solution

We will solve this coding problem by using Dynamic Programming. Here is the stepwise breakdown of the solution.

  • If n is 0 return 0. => Base Case
  • If n is 1 or 2 return 1. => Base Case
  • Create a array of size (n + 1) to store nth Tribonacci Number.
  • Loop through numbers from 3 to n (inclusive)
    • for each number i, Tribonacci Number = (i – 1)th Tribonacci Number + (i – 2)th Tribonacci Number + (i – 3)th Tribonacci Number.
  • Return nth Tribonacci Number.

C++ implementation of solution is as follows.

C++
class Solution {
public:
    int tribonacci(int n) {
        if(n == 0) {
            return 0;
        }

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

        vector<int> dp(n + 1, 0);

        dp[0] = 0;
        dp[1] = 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];
    }
};

Time Complexity

O(n) where n = given number.

Space Complexity

O(n) where n = given number.

Thanks for reading and have a nice day.