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)