0%

128题最长连续序列

解法

利用哈希表插入和查找都是O(1)的时间复杂度,把数组的数先插入哈希表,去除了重复元素。O(n)

再对HashSet里面的数,如果这个数减一不在这个表里面,那么把它当成开始元素,记录有多少个连续。O(n)

O(n)+O(n)=O(n)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* @author xixing
* @version 1.0
* @date 2020/2/26 9:44
*/
public class N128 {

public int longestConsecutive(int[] nums) {

int longest=0;
Set<Integer> set=new HashSet<Integer>();
for(int num:nums){
set.add(num);
}
for(int num:set){
if(!set.contains(num-1)){
int currentNum=num;
int countNum=1;
while (set.contains(currentNum+1)){
currentNum+=1;
countNum+=1;
}
longest=Math.max(countNum,longest);

}
}
return longest;

}
}

128.最长连续序列