给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
    请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

    示例 1:
    输入:nums = [100,4,200,1,3,2]
    输出:4
    解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
    示例 2:
    输入:nums = [0,3,7,2,5,8,4,6,0,1]
    输出:9

    1. /**
    2. * @param {number[]} nums
    3. * @return {number}
    4. */
    5. var longestConsecutive = function (nums) {
    6. let set = new Set(nums);
    7. let longestLength = 0;
    8. // 遍历,如果前一个数不再set中,继续,如果在则跳过, 后一个值在的话,最大长度加一
    9. for (num of set) {
    10. // num - 1不在set中,
    11. if (!set.has(num - 1)) {
    12. let currentNum = num;
    13. let currentLength = 1;
    14. while (set.has(currentNum + 1)) {
    15. currentNum += 1;
    16. currentLength += 1;
    17. }
    18. // 取最大值
    19. longestLength = Math.max(longestLength, currentLength);
    20. }
    21. }
    22. console.log(longestLength)
    23. return longestLength;
    24. };

    image.png