python 给定一个未排序的整数数组,找出数字连续的最长序列
时间: 2024-05-03 11:21:40 浏览: 141
最长连续序列.md
思路:
1. 先将数组排序。
2. 遍历排序后的数组,记录当前连续序列的起始和终止位置。
3. 如果当前数字与前一个数字连续,则更新终止位置。
4. 如果当前数字与前一个数字不连续,则更新起始位置。
5. 每遍历一个数字,都更新最长连续序列的长度和起始位置。
代码实现:
```python
def longestConsecutive(nums):
if not nums:
return 0
nums.sort()
start = end = res = 1
for i in range(1, len(nums)):
if nums[i] == nums[i-1]+1:
end += 1
elif nums[i] == nums[i-1]:
continue
else:
res = max(res, end-start+1)
start = end = i
return max(res, end-start+1)
```
测试:
```
>>> nums = [100, 4, 200, 1, 3, 2]
>>> longestConsecutive(nums)
4
```
时间复杂度:排序的时间复杂度为$O(nlogn)$,遍历一次数组的时间复杂度为$O(n)$,因此总时间复杂度为$O(nlogn)$。
阅读全文