128. 最长连续序列

自己做

解1:排序
java
class Solution {
public int longestConsecutive(int[] nums) {
if(nums.length == 0)
return 0;
//排序
Arrays.sort(nums);
int max = 1;
int len = 1;
for(int i = 1; i < nums.length; i++){
if(i > 1 && nums[i] == nums[i - 1])
nums[i - 1] = nums[i - 2];
else if(nums[i] == nums[i - 1] + 1)
len++;
else
len = 1;
if(len > max)
max = len;
}
return max;
}
}

看题解

java
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> num_set = new HashSet<Integer>();
for (int num : nums) {
num_set.add(num);
}
int longestStreak = 0;
for (int num : num_set) {
if (!num_set.contains(num - 1)) {
int currentNum = num;
int currentStreak = 1;
while (num_set.contains(currentNum + 1)) {
currentNum += 1;
currentStreak += 1;
}
longestStreak = Math.max(longestStreak, currentStreak);
}
}
return longestStreak;
}
}