Leetcode 128. Longest Consecutive Sequence

234 阅读1分钟
/**
 * @param {number[]} nums
 * @return {number}
 */
var longestConsecutive = function(nums) {
    if(!nums.length){
        return 0;
    }
    nums.sort((a, b) => a - b);
    let list = [nums[0]];
    for(let i = 1; i < nums.length; ++i){
        if(nums[i] !== nums[i - 1]){
            list.push(nums[i]);
        }
    }
    let max = 0, sequence = [];
    for(let i = 0; i < list.length; ++i){
        if(!sequence.length){
            sequence.push(list[i]);
        }
        else{
            if(Math.abs(list[i] - sequence[sequence.length - 1]) === 1){
                sequence.push(list[i]);
            }
            else if(Math.abs(list[i] - sequence[sequence.length - 1]) > 1){
                if(sequence.length > max){
                    max = sequence.length;
                }
                sequence = [list[i]];
            }
        }
    }
    if(sequence.length > max){
        max = sequence.length;
    }
    return max;
};