陣列 128 最長連續序列 20200523

2021-10-06 10:13:42 字數 881 閱讀 4491

本題目在位元組跳動的面試過程**現過,所以在此進行總結一下。

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

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

示例:

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

輸出: 4

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

本題目要求找到最長連續序列的長度,但是陣列尚未排序,那麼第乙個可以想到的解決辦法就是先排序,然後找最長連續序列的長度。第二種解法可以利用set的特性,o(1)的時間複雜度就可以取到某個值。

public int longestconsecutive(int nums) 

arrays.sort(nums);

listlist = new arraylist<>();

for (int i = 0; i < length; i++)

int maxlen = 0;

int currentlen = 1;

for (int i = 0; i < length; ) else

}maxlen = math.max(maxlen, currentlen);

return maxlen;

}

public int longestconsecutive3(int nums) 

int longeststreak = 0;

for (int num : num_set)

longeststreak = math.max(longeststreak, currentstreak);}}

return longeststreak;

}

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