# 最长连续序列
"""
给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为O(n)的算法解决此问题。
"""
# 常规思路,必然过不了
class Solution1:
def longestConsecutive(self, nums) -> int:
snum = 0
for i in nums:
num = 1
while i + 1 in nums:
i += 1
num += 1
if num > snum:
snum = num
return snum
class Solution:
def longestConsecutive(self, nums) -> int:
set_nums = set(nums)
max_length = 0
for num in set_nums:
if num - 1 in set_nums:
continue
length = 1
while num + 1 in set_nums:
num += 1
length += 1
max_length = max(length, max_length)
return max_length
nums = [100, 4, 200, 1, 3, 2]
nums1 = [0, 3, 7, 2, 5, 8, 4, 6, 0, 1]
a = Solution()
print(a.longestConsecutive(nums1))
# 这道题暴力搜索,但是O(n)的复杂度不够 不过好理解
LeetCode 128.最长连续序列 Python题解
最新推荐文章于 2024-06-27 16:01:16 发布