最长连续序列
package hashtable
import "sort"
func longestConsecutive(nums []int) int {
length := len(nums)
if length == 0 {
return 0
}
maxLength := 0
sort.Ints(nums)
ans := 1
for i := 1; i < length; i++ {
prevValue := nums[i-1]
currentValue := nums[i]
if currentValue == prevValue {
continue
}
if currentValue-prevValue == 1 {
ans++
maxLength = max2(maxLength, ans)
} else {
ans = 1
}
}
maxLength = max2(maxLength, ans)
return maxLength
}
func max2(value1, value2 int) int {
if value1 > value2 {
return value1
}
return value2
}
func longestConsecutiveI(nums []int) int {
numSet := map[int]bool{}
for _, num := range nums {
numSet[num] = true
}
longestStreak := 0
for num := range numSet {
if !numSet[num-1] {
currentNum := num
currentStreak := 1
for numSet[currentNum+1] {
currentNum++
currentStreak++
}
if longestStreak < currentStreak {
longestStreak = currentStreak
}
}
}
return longestStreak
}