leetcode最长子串,最长连续子序列python
1.题目描述给定一个无序的整数数组,求最长连续序列的长度。
该算法所需的时间复杂度为O(n)。
示例:
输入:[100,4,200,1,3,2]
输出:4
说明:最长的连续序列是[1,2,3,4]。它的长度是4。
2.思路请参考https://leet code-cn . com/problems/long-conservative-sequence/solution/zui-Chang-Lian-Xu-Xu-lie-by-leet code/
2.1暴力地、穷尽地遍历nums数组中的每一个数,并把这个数作为一个连续序列中的第一个数,枚举后面的数,直到有些数在原数组中从未出现过。当枚举不在数组中的数时,记录序列的长度,并更新当前最优解。
类解:def longest conservative (self,Num:list[int])-int:RES=0 for I in nums:count=0j=I while j in nums:count=1j=1 RES=max(RES,count) return res 2.2 Sort首先,查找时间的复杂度为o (nlogn)类解:def long conservative(self,nums:list[int])-int:if nums==[]:return 0 nums . Sort()maxlen=1 curlen=1 for I in range(1, len (nums)): ifnums [=nums[i-1]: #如果有重复数,则长度为1 If nums[I]==nums[I-1]1:curlen=1 maxlen=max(maxlen,curlen) Else: maxlen=max (maxlen,curlen) curlen=1使用集合空间进行交换返回maxlen 2.3
类解:def longest continuous(self,nums:List[int])-int:if len(nums)==0:返回0 numset=set(nums)maxlen=0 for num in numset:curlen=1 if NUM-1 not in numset:#当只有NUM是序列的结束点时,循环正在进行,复杂度为O (n n)=O (n)而NUM set:curl=1 NUM=1 NUM=1 maxlen=max(maxlen,curl)返回maxlen
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。