128 最長連續序列(利用連續和去重)

2021-09-27 08:22:34 字數 1105 閱讀 9861

給定乙個未排序的整數陣列,找出最長連續序列的長度。

要求演算法的時間複雜度為o(n)

示例:

輸入: [100, 4, 200, 1, 3, 2]

輸出: 4

解釋: 最長連續序列是 [1, 2, 3, 4]。它的長度為 4。

【困難】

【分析】利用連續性,去掉重複性。

class solution(object):

def longestconsecutive(self, nums):

""":type nums: list[int]

:rtype: int

"""nums=set(nums)

res=0

for num in nums:

if num-1 not in nums:

cur_num=num

len_num=1

while cur_num+1 in nums:

cur_num+=1

len_num+=1

res=max(res,len_num)

return res

注:若用排序的方法,則需要o(n

logn

)o(nlogn)

o(nlog

n)

class solution(object):

def longestconsecutive(self, nums):

""":type nums: list[int]

:rtype: int

"""if not nums:

return 0

nums=sorted(nums)

len_num,res=1,1

for i in range(1,len(nums)):

if nums[i]==nums[i-1]:

pass

elif nums[i]==nums[i-1]+1:

len_num+=1

else:

len_num=1

res=max(res,len_num)

return res

128 最長連續序列

題目 給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。關鍵是使用雜湊表儲存。o n 複雜度 乙個序列為x,x 1,x 2,x y,那麼對於x 1,x 2,x y這...

128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。思路 hash表 列舉,我們先用hash set儲存每乙個數,再遍歷每乙個數i為起始位置時,查詢是否存在i ...

128 最長連續序列

複雜度分析 時間複雜度 o n 其中 n 為陣列的長度。空間複雜度 o n 雜湊表儲存陣列中所有的數需要 o n 的空間。題解 class solution int next val 1 while table.find next table.end length max length,l retu...