給定乙個未排序的整數陣列,找出最長連續序列的長度。
要求演算法的時間複雜度為 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...