Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Your algorithm should run in O(n) complexity.
Example:
Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
解法
先将nums去掉重复值, 再升序排列, 遍历nums, 将计数的值加到结果中, 最后取最大值.
Time: O(n)
Space: O(1)
代码
class Solution:
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
# edge case
if not nums: return 0
nums = sorted(list(set(nums)))
if len(nums) == 1:
return 1
count = 1
ans = [count]
for i in range(1, len(nums)):
if nums[i] - nums[i-1] == 1:
count += 1
ans.append(count)
else:
ans.append(count)
count = 1
return max(ans)
最长连续序列算法解析
本文介绍了一种在未排序整数数组中寻找最长连续元素序列的算法,该算法的时间复杂度为O(n),通过去除重复值并排序,然后遍历数组以计算最长连续序列的长度。示例输入为[100,4,200,1,3,2],输出为4,解释为最长连续序列是[1,2,3,4]。
927

被折叠的 条评论
为什么被折叠?



