N-th Tribonacci Number
T(n) = T(n-1) + T(n-2) + T(n-3); rolling 3 scalars.
3 min read
dp fibonacci
Problem#
T(0) = 0, T(1) = T(2) = 1; T(n) = T(n-1) + T(n-2) + T(n-3). Return T(n).
Examples#
n = 4→4n = 25→1389537
Constraints#
0 <= n <= 37.
Approach#
Three rolling scalars.
Solution#
class Solution {public: int tribonacci(int n) { if (n == 0) return 0; if (n < 3) return 1; int a = 0, b = 1, c = 1; for (int i = 3; i <= n; ++i) { int d = a + b + c; a = b; b = c; c = d; } return c; }};func tribonacci(n int) int { if n == 0 { return 0 } if n < 3 { return 1 } a, b, c := 0, 1, 1 for i := 3; i <= n; i++ { d := a + b + c a, b, c = b, c, d } return c}class Solution: def tribonacci(self, n: int) -> int: if n == 0: return 0 if n < 3: return 1 a, b, c = 0, 1, 1 for _ in range(3, n + 1): a, b, c = b, c, a + b + c return cfunction tribonacci(n) { if (n === 0) return 0; if (n < 3) return 1; let a = 0, b = 1, c = 1; for (let i = 3; i <= n; i++) { const d = a + b + c; a = b; b = c; c = d; } return c;}class Solution { public int tribonacci(int n) { if (n == 0) return 0; if (n < 3) return 1; int a = 0, b = 1, c = 1; for (int i = 3; i <= n; i++) { int d = a + b + c; a = b; b = c; c = d; } return c; }}function tribonacci(n: number): number { if (n === 0) return 0; if (n < 3) return 1; let a = 0, b = 1, c = 1; for (let i = 3; i <= n; i++) { const d = a + b + c; a = b; b = c; c = d; } return c;}Editorial#
Generalization of Fibonacci. Same rolling-scalar pattern with one extra slot.
Complexity#
- Time: O(n).
- Space: O(1).
Concept revision#
Related#