Skip to content

Commit 849b919

Browse files
Jeehay28Jeehay28
authored andcommitted
Add longest-consecutive-sequence solution in TypeScript
1 parent 33772b8 commit 849b919

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// Approach 3
2+
// ⏳ Time Complexity: O(n) ✅
3+
// 💾 Space Complexity: O(n)
4+
5+
function longestConsecutive(nums: number[]): number {
6+
if (nums.length === 0) return 0;
7+
8+
const numSet = new Set<number>(nums);
9+
// The Set stores O(n) numbers.
10+
let longest = 0;
11+
12+
for (const num of numSet) {
13+
if (!numSet.has(num - 1)) {
14+
// Set.has() operation runs in O(1) average time.
15+
let size = 1;
16+
17+
while (numSet.has(num + size)) {
18+
size += 1;
19+
}
20+
21+
longest = Math.max(longest, size);
22+
}
23+
}
24+
25+
return longest;
26+
}
27+
28+
29+
// Approach 2
30+
// ⏳ Time Complexity: O(n * log n)
31+
// 💾 Space Complexity: O(1)
32+
33+
// function longestConsecutive(nums: number[]): number {
34+
// if (nums.length === 0) {
35+
// return 0;
36+
// }
37+
38+
// nums.sort((a, b) => a - b);
39+
// // Sorting takes O(n * log n) time.
40+
// // Sorting is in-place -> O(1) extra space
41+
42+
// let longest = 0;
43+
44+
// let size = 1;
45+
46+
// for (let i = 0; i < nums.length - 1; i++) {
47+
// if (nums[i] === nums[i + 1]) {
48+
// continue;
49+
// }
50+
51+
// if (nums[i] + 1 === nums[i + 1]) {
52+
// size += 1;
53+
// } else {
54+
// longest = Math.max(longest, size);
55+
// size = 1;
56+
// }
57+
// }
58+
59+
// longest = Math.max(longest, size);
60+
61+
// return longest;
62+
// }
63+
64+
65+
// Approach 1
66+
// ❌ Time Limit Exceeded!
67+
// ⏳ Time Complexity: O(n^3)
68+
// 💾 Space Complexity: O(1)
69+
70+
// function longestConsecutive(nums: number[]): number {
71+
// let longest = 0;
72+
73+
// for (const num of nums) {
74+
// let size = 1;
75+
// while (nums.includes(num + size)) {
76+
// size += 1;
77+
// }
78+
79+
// longest = Math.max(longest, size);
80+
// }
81+
82+
// return longest;
83+
// }
84+
85+

0 commit comments

Comments
 (0)