Medium
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(define (longest-consecutive nums)
  (define uniq (list->set nums))
  (define (seq x a)
    (cond
      [(set-member? uniq x) (seq (add1 x) (add1 a))]
      [else a]))
  (let loop ([l (set->list uniq)] [m 0])
    (match l
      ['() m]
      [(cons x xs) #:when (not (set-member? uniq (sub1 x))) (loop xs (max m (seq x 0)))]
      [(cons x xs) (loop xs m)])))