leetcode [128] 最长连续序列
Contact me:
Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
来自题解:
hash保存每个值为端点的最大长度,查询当前值-1和+1的最大长度,设置他们的值为当前值的最大长度。
class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
hash_dict = {}
maxlen = 0
for n in nums:
if n not in hash_dict:
left = hash_dict.get(n - 1, 0)
right = hash_dict.get(n + 1, 0)
current = left + right + 1
maxlen = max(maxlen, current)
hash_dict[n] = current
hash_dict[n - left] = current
hash_dict[n + right] = current
return maxlen