题目链接
思路
主要就是找连续子序列开始的起点 ,然后慢慢找最长的长度。由于题目第三个列子我们可以知道,重复的数字不计入长度,因此我们可以先用set去重,再找每一个子序列的起点,即**set中不包含num - 1,**再看以这个数为起点的最长连续序列长度为多少,与之前保存的结果比较
代码
java
class Solution {
//找连续起点
public int longestConsecutive(int[] nums) {
int res = 0;
HashSet<Integer> set = new HashSet<>();
for (int num : nums)
set.add(num);
for (int num : set) {
//找到起点
if (!set.contains(num - 1)) {
int currentNum = num;
int currentLength = 1;
while (set.contains(currentNum + 1)) {
currentNum++;
currentLength++;
}
res = Math.max(res, currentLength);
}
}
return res;
}
}