Find the longest consecutive sequence in a given array of length “n” in 0(n) time.
For example, lets consider the following input:
[1000, 1001, 1002, 1003, 2001, 2, 3]
The longest consecutive sequence in this case would be
[1000, 1001, 1002, 1003]
The length of this array is 4.
/**
* @param {number[]} nums
* @return {number}
*/
const longestConsecutive = function(nums) {
if (!nums || !nums.length) {
return 0;
}
var obj = {};
for (let val of nums) {
obj[val] = true;
}
let max = 1;
for (let val of nums) {
if (!((val - 1) in obj)) {
let currLen = 1;
let curr = val;
while ((curr + 1) in obj) {
curr++;
currLen++;
}
max = Math.max(max, currLen);
}
}
return max;
};
console.log(longestConsecutive([1000, 1001, 1002, 1003, 2001, 2, 3]));
// 4