题目:Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given[100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is[1, 2, 3, 4]. Return its length:4.
Your algorithm should run in O(n) complexity.
解析:题目的意思是求最长的连续子序列长度,当然要求时间复杂度为O(n)。
import java.util.Arrays;
public class Solution {
public int longestConsecutive(int[] num) {
if(num.length==1){
return 1;
}
int max=0;//最大的长度
int count=1;//给当前连续的元素计数
Arrays.sort(num);//先来个排序
for(int i=1;i<num.length;i++){
if((num[i]==num[i-1]+1)){//当前的元素是前一个元素+1
count++;
if(count>=max){
max=count;
}
}else if ((num[i]==num[i-1])){//当前的元素和前一个元素一样,不计数
if(count>=max){
max=count;
}
continue;
}
else{//当前的元素不等于前一个元素,重新计数
count=1;
if(count>=max){
max=count;
}
}
}
return max;
}
}