数组无顺序 + 连续序列要求项于项之间有差1的关联 => 想到了用set结构
if(arr.length === 0 ) return 0极端处理下
var set = new Set(arr) arr转换为set结构
var res = 1 不为空数组,初始化最长连续序列长度为1
for (var num of set) { 遍历set结构
var flag = !set.has(num - 1) 满足最长连续序列的首个数字num,则num-1一定是不存在的
if (flag) { 满足num-1不存在的num可能有很多,我们只需要在后面取最长的最优值即可
var i = num 记录一下最长连续序列的首个数字num
var j = 1 记录下连续序列的长度
while (set.has(i + 1)) { 循环判断num+1,num+2 。。。。存在的情况
i++ 如果num+1存在,则需要进一步判断num+2,依次类推
j++ 跟随上面记录下长度
res = Math.max(res, j) 选出最有解
var longestConsecutive = function (arr) {
if(arr.length === 0 ) return 0
var set = new Set(arr)
var res = 1
for (var num of set) {
var flag = !set.has(num - 1)
if (flag) {
var i = num
var j = 1
while (set.has(i + 1)) {
i++
j++
res = Math.max(res, j)
}
}
}
return res
};