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));