一、题目描述
给定一个未排序的整数数组 nums
,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
示例 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
提示:
0 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
二、代码
代码如下:
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
nums = list(set(nums))
nums.sort()
if len(nums) == 0:
return 0
if len(nums) == 1:
return 1
result = []
count = 1
for i in range(len(nums)-1):
if nums[i] + 1 == nums[i+1]:
count = count + 1
if i == len(nums) - 2:
result.append(count)
continue
else:
result.append(count)
count = 1
continue
result.append(1)
print(max(result))
return max(result)
三、解题思路
本题解题思路为将nums
数组进行从小打大的排序,然后依次判断相邻2个元素之间是否满足后一个元素比前一个元素大1的要求,如果满足则另计数器count
加1
(count
最开始为1
),反之记录下当前count的值,并令count
归1
。直到遍历完整个数组,返回记录的count
中最大值即可。时间复杂度不为O(n)
。