class Solution {
public int longestConsecutive(int[] nums) {
if (nums == null || nums.length == 0) return 0;
Set<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
int maxLen = 0;
for (int num : set) {
if (!set.contains(num - 1)) {
int currentNum = num;
int currentLen = 1;
while (set.contains(currentNum + 1)) {
currentNum++;
currentLen++;
}
maxLen = Math.max(maxLen, currentLen);
}
}
return maxLen;
}
}解题思路
使用HashSet先进行去重
然后遍历set,采用contains检查起点,当已经没有num - 1时证明为当前set的长度,下一步循环开始获取到set整个的长度,最后使用Math.max获取到最长序列