JSFiddle - React, Tailwind, and code Playground
by sperske
JavaScript
const exampleA = [100, 4, 200, 3, 2, 1];
const exampleB = [0, 3, 2, 4, 5, 6, 0, 1, 8];
const exampleC = [];
const exampleD = [0, 2, 4, 6, 8];
const longestSeq = (nums) => {
if(nums.length === 0) {
return 0;
}
const set = new Set(nums);
let potential = nums.length;
let longest = 1;
while (nums.length > 0) {
let sequence_length = 1;
let cur = nums.pop();
let looking = true;
let offset = 1;
while (set.has(cur + (offset++))) {
sequence_length += 1;
}
offset = 1;
while (set.has(cur - (offset++))) {
sequence_length += 1;
}
if (sequence_length > longest) {
longest = sequence_length;
}
if (longest > (nums.length/2)) {
return longest;
}
}
return longest;
}
console.log([100, 4, 200, 3, 2, 1], longestSeq(exampleA));
console.log([0, 3, 2, 4, 5, 6, 0, 1, 8], longestSeq(exampleB));
console.log([], longestSeq(exampleC));
console.log([0, 2, 4, 6, 8], longestSeq(exampleD));