Leetcode 128 最長連續序列

2021-09-24 08:38:45 字數 637 閱讀 3182

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

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

示例:

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

輸出: 4

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

複製**

這道題目最開始大家想的肯定是sort,然後計數計算最長序列。但是要求時間複雜度為:o(n),就不能用sort了。一般在leetcode中,對時間複雜度有要求,就用空間來換,對空間複雜度有要求,就用時間來換。

基於這種思路我們就想要求最長的,就是要記錄下有沒有相鄰的元素,比如遍歷到100這個元素,我們需要檢視[99, 101]這兩個元素在不在序列中,這樣去更新最大長度。而記錄元素有沒有這個事我們太熟悉了,用set這種資料結構,而set這種資料結構是需要o(n)的空間來換取的,這就是我們剛才說的用空間來換時間。

class

solution

int longest = 0;

for (integer num : nums)

}return longest;

}}複製**

leetcode128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。建立乙個dict,如果num不在裡面就檢視左右連續長度,再給num和左右處賦值 class solution...

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