python 给定一个未排序的整数数组,找出数字连续的最长序列并且打印出列表
时间: 2024-05-09 13:20:26 浏览: 176
以下是一个可能的解决方案:
```python
def longestConsecutive(nums):
if not nums:
return []
nums_set = set(nums)
max_len = 0
start = None
for num in nums:
if num - 1 not in nums_set:
curr_len = 1
curr_start = num
while curr_start + 1 in nums_set:
curr_len += 1
curr_start += 1
if curr_len > max_len:
max_len = curr_len
start = num
return list(range(start, start + max_len))
# 示例用法
nums = [100, 4, 200, 1, 3, 2]
print(longestConsecutive(nums)) # 输出 [1, 2, 3, 4]
```
该函数的时间复杂度为 $O(n)$,其中 $n$ 是输入数组的长度。它首先将数组转换为一个集合,以便更快地检查某个数字是否存在。然后,它遍历数组中的每个数字,如果该数字是一个连续序列的起点,则尝试向后查找更长的连续序列,并跟踪最长的序列的长度和起始数字。最后,它返回从起始数字开始的最长连续整数序列。如果输入数组为空,则返回一个空列表。
阅读全文