题目:
给定一个未排序的整数数组
nums
,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为
O(n)
的算法解决此问题。来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是[1, 2, 3, 4]。它的长度为 4。
示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
解法:
首先去重,排序。
接着如果长度小于2,返回长度。
否则,进入循环,判断前后的数是否连续,连续则记录长度。
代码:
class Solution: def longestConsecutive(self, nums: List[int]) -> int: nums = sorted(set(nums)) if len(nums) > 1: result = count = 0 for index in range(1, len(nums)): if nums[index] - nums[index - 1] == 1: count += 1 if count > result: result = count else: count = 0 return result + 1 else: return len(nums)