解题思路:
注意:
1.Set不能直接排序,必须要转换成ArrayList或者LinkedList后用Collections.sort()方法进行排序。
(Queue也不能直接排序,排序方法同Set)
2.连续的序列不能只找第一个,因为不一定是最长的,需要全部遍历完才能找到最长序列。
class Solution {
public int longestConsecutive(int[] nums) {
if (nums.length == 0) return 0;
Set<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
List<Integer> list = new ArrayList<>(set);
Collections.sort(list);
//cnt的长度从1开始,本身长度为1
int cnt = 1;
int max = 0;
//减一是为了避免越界
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i) == list.get(i + 1) - 1) {
cnt++;
} else {
max = Math.max(cnt, max);
//重置cnt的值
cnt = 1;
}
}
max = Math.max(cnt, max);
return max;
}
}