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.
public class Solution {
public int longestConsecutive(int[] num) {
if(num==null) return 0;
Map<Integer,Boolean> map=new HashMap<Integer,Boolean>();
int min=num[0],max=num[0];
for(int i=0;i<num.length;i++){
map.put(num[i],false);
if(num[i]<min) min=num[i];
if(num[i]>max) max=num[i];
}
int longest=0;
for(int i=0;i<num.length;i++){
if(map.get(num[i])==true) continue;
map.put(num[i], true);
int curr=num[i];
int len=1;
for(int j=curr+1;j<=max;j++){
if(map.containsKey(j)!=true) break;
map.put(j, true);
len++;
}
for(int j=curr-1;j>=min;j--){
if(map.containsKey(j)!=true) break;
map.put(j, true);
len++;
}
if(len>longest) longest=len;
}
return longest;
}
}
本文介绍了一种寻找整数数组中最长连续元素序列的算法。该算法能在O(n)的时间复杂度内解决给定问题,例如从[100,4,200,1,3,2]中找到最长连续序列[1,2,3,4]并返回其长度4。
918

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



