这道题的链接放在这里了:
这道题主要思路就是想要在一个凌乱的数组中找出一组最长的连续数字序列
我对于这道题个人的解法如下:
java
class Solution {
public int longestConsecutive(int[] nums) {
if(nums==null||nums.length==0){
return 0;
}
Set<Integer> set = new HashSet<>();
int res = 1;
for(int num:nums){
set.add(num);
}
for(int num:set){
if(set.contains(num-1)){
continue;
}
if(set.contains(num+1)){
int cur = num;
int curLength = 1;
while(set.contains(cur+1)){
cur++;
curLength++;
}
res = Math.max(res,curLength);
}
}
return res;
}
}
直接用循环的暴力查找方法我们就不考虑了,我是使用Set来存储数组中的每一个元素,这也就达到了我的一个目的:"去重",因为如果说数组中出现重复元素的话,是不影响结果的,比如说最长序列是123456,数组中有多个1、多个2...都是对结果没影响的,但是不处理的话会影响我们的效率,接下来我们要遍历set,如果说在set中存在当前的数字+1,那就直接跳过,因为如果我们每一个数字都要计算长度的话那会很浪费时间,所以我们为了节省时间,我选择只对一组连续数字的最小的数字进行长度计算从而获得这个连续数字串的长度,当然选择最大的值也行,逮住最小值就计算一下长度,在取最大值返回就好了;