Skip to content

Commit afc6fed

Browse files
committed
leetcode
1 parent 1c5d425 commit afc6fed

File tree

5 files changed

+197
-1
lines changed

5 files changed

+197
-1
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
/*
2+
3+
4+
5+
6+
-* 1137. N-th Tribonacci Number *-
7+
8+
9+
10+
The Tribonacci sequence Tn is defined as follows:
11+
12+
T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0.
13+
14+
Given n, return the value of Tn.
15+
16+
17+
18+
Example 1:
19+
20+
Input: n = 4
21+
Output: 4
22+
Explanation:
23+
T_3 = 0 + 1 + 1 = 2
24+
T_4 = 1 + 1 + 2 = 4
25+
Example 2:
26+
27+
Input: n = 25
28+
Output: 1389537
29+
30+
31+
Constraints:
32+
33+
0 <= n <= 37
34+
The answer is guaranteed to fit within a 32-bit integer, ie. answer <= 2^31 - 1.
35+
36+
37+
*/
38+
39+
class Solution {
40+
int tribonacci(int n) {
41+
if (n == 0) return 0;
42+
if (n == 1 || n == 2) return 1;
43+
List<int> Tribonacci = List.filled(n + 1, 0);
44+
Tribonacci[0] = 0;
45+
Tribonacci[1] = 1;
46+
Tribonacci[2] = 1;
47+
for (int i = 3; i < n + 1; i++) {
48+
Tribonacci[i] = Tribonacci[i - 1] + Tribonacci[i - 2] + Tribonacci[i - 3];
49+
}
50+
return Tribonacci[n];
51+
}
52+
}
53+
54+
class B {
55+
int tribonacci(int n) {
56+
if (n == 0) return 0;
57+
if (n == 1) return 1;
58+
if (n == 2) return 1;
59+
int a = 0, b = 1, c = 1, d = 0;
60+
for (int i = 3; i <= n; i++) {
61+
d = a + b + c;
62+
a = b;
63+
b = c;
64+
c = d;
65+
}
66+
return d;
67+
}
68+
}
69+
70+
class C {
71+
int tribonacci(int n) {
72+
if (n < 2) return n;
73+
if (n == 2) return 1;
74+
return tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
75+
}
76+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package main
2+
3+
// func tribonacci(n int) int {
4+
// if n == 0 {
5+
// return 0
6+
// }
7+
// if n == 1 || n == 2 {
8+
// return 1
9+
// }
10+
// var Tribonacci []int = make([]int, n+1)
11+
// Tribonacci[0] = 0
12+
// Tribonacci[1] = 1
13+
// Tribonacci[2] = 1
14+
// for i := 3; i < n+1; i++ {
15+
// Tribonacci[i] = Tribonacci[i-1] + Tribonacci[i-2] + Tribonacci[i-3]
16+
// }
17+
// return Tribonacci[n]
18+
// }
19+
20+
// func tribonacci(n int) int {
21+
// if n == 0 {
22+
// return 0
23+
// }
24+
// if n == 1 || n == 2 {
25+
// return 1
26+
// }
27+
28+
// var a int = 0
29+
// var b int = 1
30+
// var c int = 1
31+
// var d int = 0
32+
// for i := 3; i <= n; i++ {
33+
// d = a + b + c
34+
// a = b
35+
// b = c
36+
// c = d
37+
// }
38+
// return d
39+
// }
40+
41+
func tribonacci(n int) int {
42+
if n == 0 {
43+
return 0
44+
}
45+
if n == 1 || n == 2 {
46+
return 1
47+
}
48+
return tribonacci(n-1) + tribonacci(n-2) + tribonacci(n-3)
49+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# 🔥 3 Approaches 🔥 || Simple Fast and Easy || with Explanation
2+
3+
## Solution
4+
5+
### Intuition of this Problem
6+
7+
T[n] = T[n-1] + T[n-2] + T[n-3]
8+
9+
NOTE - PLEASE READ APPROACH FIRST THEN SEE THE CODE. YOU WILL DEFINITELY UNDERSTAND THE CODE LINE BY LINE AFTER SEEING THE APPROACH.
10+
11+
### Approach for this Problem
12+
13+
1. Initialize a vector "Tribonacci" with n+1 elements
14+
2. Check if n is 0, if true return 0
15+
3. Check if n is 1, if true return 1
16+
4. Check if n is 2, if true return 1
17+
5. Set Tribonacci[0] = 0, Tribonacci[1] = 1, Tribonacci[2] = 1
18+
6. Iterate from i = 3 to n+1
19+
7. Set Tribonacci[i] = Tribonacci[i-1] + Tribonacci[i-2] + Tribonacci[i-3]
20+
8. Return Tribonacci[n]
21+
22+
### Code - Memoization
23+
24+
```dart
25+
class Solution {
26+
int tribonacci(int n) {
27+
if (n == 0) return 0;
28+
if (n == 1 || n == 2) return 1;
29+
List<int> Tribonacci = List.filled(n + 1, 0);
30+
Tribonacci[0] = 0;
31+
Tribonacci[1] = 1;
32+
Tribonacci[2] = 1;
33+
for (int i = 3; i < n + 1; i++) {
34+
Tribonacci[i] = Tribonacci[i - 1] + Tribonacci[i - 2] + Tribonacci[i - 3];
35+
}
36+
return Tribonacci[n];
37+
}
38+
}
39+
```
40+
41+
### Code - Iterative
42+
43+
```dart
44+
class Solution {
45+
int tribonacci(int n) {
46+
if (n == 0) return 0;
47+
if (n == 1) return 1;
48+
if (n == 2) return 1;
49+
int a = 0, b = 1, c = 1, d = 0;
50+
for (int i = 3; i <= n; i++) {
51+
d = a + b + c;
52+
a = b;
53+
b = c;
54+
c = d;
55+
}
56+
return d;
57+
}
58+
}
59+
```
60+
61+
### Code - Recursive
62+
63+
```dart
64+
class Solution {
65+
int tribonacci(int n) {
66+
if (n < 2) return n;
67+
if (n == 2) return 1;
68+
return tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
69+
}
70+
}
71+
```

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ This repo contain leetcode solution using DART and GO programming language. Most
198198
- [**472.** Concatenated Words](ConcatenatedWords/concatenated_words.dart)
199199
- [**352.** Data Stream as Disjoint Intervals](DataStreamAsDisjointIntervals/data_stream_as_disjoint_intervals.dart)
200200
- [**460.** LFU Cache](LFUCache/lfu_cache.dart)
201+
- [**1137.** N-th Tribonacci Number](N-thTribonacciNumber/n_th_tribonacci_number.dart)
201202

202203
## Reach me via
203204

0 commit comments

Comments
 (0)