面试150 最长连续序列
思路
我们首先对数组进行升序排序。排序后,遍历过程中如果遇到相邻元素相同的情况,则跳过以避免重复计算;如果当前元素等于前一个元素加一,说明是连续序列的一部分,此时将当前连续序列长度加一;如果不满足连续条件(即当前元素不等于前一个元素 + 1),则重置连续计数器。为了记录最长连续序列的长度,引入变量 ans,在每次更新时取当前长度和 ans 的最大值。遍历结束后,返回 ans 和当前计数值 count 中的较大者作为最终结果。
class Solution:def longestConsecutive(self, nums: List[int]) -> int:if not nums:return 0nums.sort() #排序count=1ans=1n=len(nums)for i in range(1,n):if nums[i]==nums[i-1]:continueelif nums[i]==nums[i-1]+1:count+=1#中途可能会断开else:ans=max(ans,count)count=1return max(count,ans)