題目來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-consecutive-sequence
給定一個未排序的整數(shù)數(shù)組搏讶,找出最長連續(xù)序列的長度稿蹲。
要求算法的時間復(fù)雜度為 O(n)。
示例:
輸入: [100, 4, 200, 1, 3, 2]
輸出: 4
解釋: 最長連續(xù)序列是 [1, 2, 3, 4]凰锡。它的長度為 4。
利用HashMap或者HashSet解法:
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<Integer>();
for (int num : nums) {
set.add(num);
}
int ans = 0;
for (int num : nums) {
if (!set.contains(num-1)){
int len = 1;
while (set.contains(++num)){
len++;
}
ans = Math.max(ans, len);
}
}
return ans;
}
}