leetcode top 100 刷题之旅-top3(最长连续序列)

136 阅读1分钟

解题思路:

image.png

具体的代码:

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
}