最长的连续序列
128. Longest Consecutive Sequence Hard
Description
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.
题意
求一数组中的最长连续序列的长度
解题思路
遍历数组,然后判断其左右-1,+1的数是否在数组中。
code
class Solution(object):
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
dic = {num:False for num in nums}
res = 0
for i in dic:
if dic[i] == False:
cur, left = i-1, 0
while cur in dic:
dic[cur] = True
left += 1
cur -= 1
cur, right = i+1, 0
while cur in dic:
dic[cur] = True
right += 1
cur += 1
res = max(res,left+1+right)
return res