leetcode刷题笔记一百二十八题 最长连续序列
leetcode刷题笔记一百二十八题 最长连续序列
源地址:128. 最长连续序列
问题描述:
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
//本题主要使用Hash的结构特性缩短查找时间
//整个查找过程基于currentNum-1是否存在,如果存在则跳过因为在找到currentNum-1时会进行处理
//否则 currentNum应该为一串序列的首个数字,继续查找后续的数字是否存在
//直到整个序列查完即可
import scala.collection.mutable
object Solution {
def longestConsecutive(nums: Array[Int]): Int = {
val HSet = mutable.HashSet[Int]()
var longestStreak = 0
for (num <- nums) HSet.add(num)
for (num <- HSet){
if (HSet.contains(num-1) == false){
var currentNum = num
var currentStreak = 1
while (HSet.contains(currentNum+1) == true){
currentNum += 1
currentStreak += 1
}
longestStreak = Math.max(longestStreak, currentStreak)
}
}
return longestStreak
}
}