leetcode128 最長連續序列

2021-09-12 12:48:46 字數 839 閱讀 4084

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

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

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

輸出: 4

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

建立乙個dict,如果num不在裡面就檢視左右連續長度,再給num和左右處賦值:

class

solution

:def

longestconsecutive

(self, nums: list[

int])-

>

int:

res, num_dict =0,

for num in nums:

if num not

in num_dict:

# 檢視左右長度,並給左右長度賦新值

left, right = num_dict.get(num-1,

0), num_dict.get(num+1,

0)num_length =

1+left+right

num_dict[num]

= num_length

# 這裡一開始想應該是最左端到最右端都要變,但實際中間部分不會再和新值相鄰所以可以不管

num_dict[num-left]

= num_length

num_dict[num+right]

= num_length

if num_length > res:

res = num_length

return res

Leetcode 128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。複製 這道題目最開始大家想的肯定是sort,然後計數計算最長序列。但是要求時間複雜度為 o n 就不能用so...

LeetCode128 最長連續序列

原題目給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。題目分析 方法一 排序直接查詢法 先對陣列進行快排,然後從開始開始比較前後兩者是否相差1,相差1則計數...

leetcode 128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。class solution def longestconsecutive self,nums list i...