题目描述
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.
我的解答是这样的:
先对数组排序,用res记录当前连续元素的个数,用max记录当前最大连续元素的个数。
如果后一值-当前值=1,则res+1,如果相等,continue,继续下一次循环,如果不符合上述条件,res置为1,重新寻找连续元素。
代码如下:
import java.util.*;
public class Solution {
public int longestConsecutive(int[] num) {
Arrays.sort(num);
int max = 1;
int res = 1;
for(int i=0; i<num.length-1; i++){
if(num[i+1]-num[i] == 1){
res++;
max = Math.max(res,max);
}else if(num[i+1]-num[i] == 0){
continue;
}else{
res = 1;
}
}
return max;
}
}
我是偶然提交,然后通过了,那种喜悦仿佛高中时做出来一道立体几何证明题。