解题思路:
具体的代码:
package top100
import (
"testing"
)
func TestTop3(t *testing.T) {
// 最长连续序列
ints := []int{100, 4, 200, 1, 3, 2}
println(loggerStr(ints))
}
func loggerStr(nums []int) int {
// 需要使用map 来判断当前的数据是否已经存
numset := make(map[int]bool)
for _, value := range nums {
numset[value] = true
}
var longestStreak int
for num := range numset {
// 判断当前的数据x-1 是否存在,如果不存在就需要从当前的值往后数
if !numset[num-1] {
currentNum := num // 保存当前的值,然后基于当前的值向后数
currentSteak := 1 // 记录当前的最长的序列
for numset[currentNum+1] {
currentNum++
currentSteak++
}
// 如果当前的长度大于旧的长度,将最新的长度重新赋值给它
if longestStreak < currentSteak {
longestStreak = currentSteak
}
}
}
return longestStreak
}