| 1234567891011121314151617181920212223242526272829303132 | 
							- package main
 
- func longestConsecutive(nums []int) (length int) {
 
- 	n := len(nums)
 
- 	if n <= 1 {
 
- 		return n
 
- 	}
 
- 	uf := NewUF(n)
 
- 	m := make(map[int]int)
 
- 	for i := 0; i < n; i++ {
 
- 		if _, ok := m[nums[i]]; !ok {
 
- 			m[nums[i]] = i
 
- 			if idL, okL := m[nums[i]-1]; okL {
 
- 				uf.Union(i, idL)
 
- 			}
 
- 			if idR, okR := m[nums[i]+1]; okR {
 
- 				uf.Union(i, idR)
 
- 			}
 
- 		}
 
- 	}
 
- 	for i := 0; i < n; i++ {
 
- 		if uf.Size[i] > length {
 
- 			length = uf.Size[i]
 
- 		}
 
- 	}
 
- 	return
 
- }
 
- // func main() {
 
- // 	println(longestConsecutive([]int{100, 4, 200, 1, 3, 2}), 4)
 
- // 	println(longestConsecutive([]int{0, -1}), 2)
 
- // }
 
 
  |