python 给定一个未排序的整数数组,找出数字连续的最长序列并且打印出列表
时间: 2024-06-12 18:04:23 浏览: 127
可以使用哈希表来解决这个问题。首先将数组中的所有数字存入哈希表中,并标记为未访问。然后遍历数组中的每个数字,如果这个数字没有被访问过,就向左和向右搜索,直到找到所有连续的数字。将这些数字标记为已访问,记录这个序列的长度,并保存序列的起点和终点。重复这个过程,直到遍历完整个数组。
以下是 Python 代码实现:
```python
def longestConsecutive(nums):
if not nums:
return []
nums_dict = {num: False for num in nums}
longest_seq = 0
start, end = 0, 0
for num in nums:
if nums_dict[num]:
continue
nums_dict[num] = True
left = num - 1
right = num + 1
while left in nums_dict and not nums_dict[left]:
nums_dict[left] = True
left -= 1
while right in nums_dict and not nums_dict[right]:
nums_dict[right] = True
right += 1
seq_len = right - left - 1
if seq_len > longest_seq:
longest_seq = seq_len
start, end = left + 1, right - 1
return list(range(start, end + 1))
```
例如,对于输入 `[100, 4, 200, 1, 3, 2]`,运行 `longestConsecutive` 函数将返回 `[1, 2, 3, 4]`。
阅读全文