128. 最长连续序列
【题解】哈希表思路和算法
- 首先设置Set枚举
numsSet
,使用Set可以对原数组去重,并且可以提供查找方法快速判断并获取元素 - 要获得连续序列,那么这个序列的第一个数
x
一定在numsSet
中,且x-1
一定不在numsSet
中 numsSet
中查找不存在x-1
的x
值,并循环计算x++
是否在numsSet
- 循环过程中保留每次循环的最大次数,即为最长的连续序列的长度
【代码】
/**
* @param {number[]} nums
* @return {number}
*/
var longestConsecutive = function(nums) {
let numsSet = new Set()
for (let i of nums) {
numsSet.add(i)
}
let ret = 0
for(let num of numsSet) {
if (!numsSet.has(num - 1)) {
let currentNum = num
let currentLen = 1
while (numsSet.has(currentNum + 1)) {
currentNum += 1
currentLen += 1
}
ret = Math.max(ret, currentLen)
}
}
return ret
};