Overview
Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.
You must solve this in O(n) time.
Constraints
0 <= nums.length <= 100,000-10^9 <= nums[i] <= 10^9- Must run in O(n) time — sorting is not allowed.
Examples
longestConsecutive([100, 4, 200, 1, 3, 2]); // => 4 (sequence: 1, 2, 3, 4)
longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1]); // => 9 (sequence: 0, 1, 2, 3, 4, 5, 6, 7, 8) longestConsecutive([]); // => 0
Solution
Reveal solution
function longestConsecutive(nums) {
const set = new Set(nums);
let longest = 0;
for (const num of set) {
// Only start counting from the beginning of a sequence
if (!set.has(num - 1)) {
let current = num;
let streak = 1;
while (set.has(current + 1)) {
current++;
streak++;
}
longest = Math.max(longest, streak);
}
}
return longest;
}Put all numbers in a Set. For each number that has no predecessor (num - 1 not in set), count the consecutive run forward. O(n) because each number is visited at most twice.
Resources
longest-consecutive-sequence.js
Longest Consecutive Number Sequence
hardcodingAlgorithmsHash Set
Overview
Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.
You must solve this in O(n) time.
Constraints
0 <= nums.length <= 100,000-10^9 <= nums[i] <= 10^9- Must run in O(n) time — sorting is not allowed.
Examples
longestConsecutive([100, 4, 200, 1, 3, 2]); // => 4 (sequence: 1, 2, 3, 4)
longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1]); // => 9 (sequence: 0, 1, 2, 3, 4, 5, 6, 7, 8) longestConsecutive([]); // => 0
Solution
Reveal solution
function longestConsecutive(nums) {
const set = new Set(nums);
let longest = 0;
for (const num of set) {
// Only start counting from the beginning of a sequence
if (!set.has(num - 1)) {
let current = num;
let streak = 1;
while (set.has(current + 1)) {
current++;
streak++;
}
longest = Math.max(longest, streak);
}
}
return longest;
}Put all numbers in a Set. For each number that has no predecessor (num - 1 not in set), count the consecutive run forward. O(n) because each number is visited at most twice.
Resources
NameTopicDifficulty
103 of 103 problems