128 最長連續序列 力扣

2021-09-25 11:49:05 字數 881 閱讀 9242

題意理解

給定乙個未排序陣列,求最大連續數字的長度。這個連續數字可以任意位置。

問題分析

方法1:排序+遍歷

遍歷要點是記錄連續的數字,我用的方法是和前一位比,如果比前一位大1,長度+1,如果相等,不做處理,其他情況,拿當前長度更新最大值,重置當前值為1.

方法複雜度是o(nlogn)

方法2:集合+遍歷

將陣列轉成集合儲存,

遍歷要點找序列的開頭,如果集合中有比當前數小的數,說明不是開頭;否則,就迴圈檢視下乙個數是否在集合中,記錄長度。直到找不到下乙個數為止,更新最大長度。

這個方法的複雜度是o(n),原因是,內層迴圈只有序列頭可用,序列頭越多,每個頭的長度越短,序列頭越少,每個頭的長度越多,所以是o(n + n)複雜度。

其他鏈結

int longestconsecutive(vector& nums) 

int max_size = 0;

for (int a : nums)

max_size = max(max_size, current_size);}}

return max_size;

}

int longestconsecutive(vector& nums) 

sort(nums.begin(), nums.end());

for (int i = 1; i != nums.size(); ++i)

else if (nums[i] - nums[i - 1] == 0) else

}max_size = max(max_size, current_size);

return max_size;

}

LeetCode 力扣 128 最長連續序列

給乙個陣列,求出連續的數字最多有多少個,時間複雜度要求是o n 首先想一下最直接的暴力破解。我們可以用乙個hashset把給的陣列儲存起來。然後再考慮陣列的每個數,比如這個數是n,然後看n 1在不在hashset中,然後再看n 2在不在,接下來n 3 n 4直到在hashset中找不到,記錄當前的長...

力扣題解系列 128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 輸入 100,4 200,1 3,2 輸出 4解釋 最長連續序列是 1,2,3,4 它的長度為 4。對於在陣列中的元素i,若i 1或者i 1也在陣列中,則它們在乙個連續序列中。但是同時考慮i 1和i 1就比較麻煩,而...

力扣第128題最長的連續序列

128.最長連續序列 難度 困難 標籤 並查集 給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。思路 運用並查集,使用hashmap fatherset k...