
*将元素存入Set中 Set特性可以去除重复元素
*遍历Set中的元素 判断当前元素是否存在比其小1的 若不存在则说明其是当前连续序列的 队首 则可以进行下一步 记录当前元素与当前序列长度 while循环 若存在比当前元素大 的则更新当前元素 以及当前序列长度 如此往复直到不存在比当前元素大1的 则说明当 前连续队列结束 判断下一个元素(上一个连续队列中的元素 因不是队首 会被排除掉) 跳 转到下一个连续队列的队首
*每结束一个连续队列 更新序列长度
class Solution {
public int longestConsecutive(int[] nums) {
//将原数组存入到set中 天然去重
Set<Integer> hash = new HashSet<>();
for(int num : nums) {
hash.add(num);
}
//遍历hashset 判断是否存在比当前元素更小的 若存在 判断下一个元素 不存在 进行遍历
int maxLine = 0;
for(int num : hash) {
if(!hash.contains(num - 1)) {
//不存在比当前元素小 说明是当前序列的开头 避免重复运算
//记录当前元素 与当前长度
int nownum = num;
int nowLine = 1;
//判断是否存在比当前元素大的 有则更新当前元素与长度
while(hash.contains(nownum + 1)) {
//存在比当前元素大的 说明序列未结束 更新当前元素 以及序列长度
nownum++;
nowLine++;
}
maxLine = Math.max(maxLine,nowLine);
}
}
return maxLine;
}
}
849



被折叠的 条评论
为什么被折叠?



