128 最長連續序列

2021-10-24 12:31:40 字數 851 閱讀 8423

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

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

示例:

考慮列舉陣列中的每個數 x

xx,考慮以其為起點,不斷嘗試匹配 x+1

,x+2

,⋯x+1, x+2, \cdots

x+1,x+

2,⋯是否存在,假設最長匹配到了 x+y

x+yx+

y,那麼以 x

xx 為起點的最長連續序列即為 x,x

+1,x

+2,⋯

x, x+1, x+2, \cdots

x,x+1,

x+2,

⋯,其長度為 y+1

y+1y+

1,我們不斷列舉並更新答案即可。

採用雜湊表,從存在前驅數x-1的才開始列舉。優化時間複雜度。

class

solution

int longeststeak =0;

for(

auto num : num_set)

longeststeak =

max(longeststeak, currsteak);}

}return longeststeak;}}

;

時間複雜度:o(n),外層迴圈需要 o(n) 的時間複雜度,只有當乙個數是連續序列的第乙個數的情況下才會進入內層迴圈,然後在內層迴圈中匹配連續序列中的數,因此陣列中的每個數隻會進入內層迴圈一次。根據上述分析可知,總時間複雜度為 o(n)

空間複雜度:o(n)

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...