less than 1 minute read

Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

You must write an algorithm that runs in O(n) time.

Example 1:

Input: nums = [100,4,200,1,3,2] Output: 4 Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4. Example 2:

Input: nums = [0,3,7,2,5,8,4,6,0,1] Output: 9

Constraints:

0 <= nums.length <= 105 -109 <= nums[i] <= 109

/**
 * @param {number[]} nums
 * @return {number}
 */
var longestConsecutive = function (nums) {
  let set = new Set(nums);
  let longest = 0;
  let length;

  for (const num of nums) {
    if (!set.has(num - 1)) {
      length = 0;
      while (set.has(num + length)) {
        length += 1;
      }
      longest = Math.max(length, longest);
    }
  }
  return longest;
};

The time complexity of the code is O(n) as it iterates through the array nums once. The space complexity is also O(n) because the Set created from the input array nums grows with the size of nums.

Leave a comment