给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
- 使用 hashmap 记录所有元素
- 遍历时判断当前值是否是连续序列的起点,是就开始计数,不是就跳过
func longestConsecutive(nums []int) int {
if len(nums) == 0{
return 0
}
hash := map[int]bool{}
for i:=0; i<len(nums); i++{
hash[nums[i]] = true
}
res := 1
for k := range hash{
cnt := 1
if !hash[k-1] {
cur := k + 1
for hash[cur]{
cnt ++
cur ++
}
}
res = max(res, cnt)
}
return res
}