Longest
Consecutive SequenceFeb
14
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) {
// Start typing your Java solution below
// DO NOT write main() function
HashMap<Integer, Integer> ranges = new HashMap<Integer, Integer>();
HashSet<Integer> unique = new HashSet<Integer>();
int globeMax = 0;
int sz = num.length;
if(sz<1) return 0;
for(int i=0; i<sz;i++) {
int x = num[i];
if( unique.contains(x) ) continue;
else unique.add(x);
int left = x;
int right = x;
if( ranges.containsKey(x-1) && ranges.get(x-1)<=x-1 ){
left = ranges.get(x-1);
ranges.remove(x-1);
}
if( ranges.containsKey(x+1) && ranges.get(x+1)>=x+1) {
right = ranges.get(x+1);
ranges.remove(x+1);
}
ranges.put(left, right);
ranges.put(right,left);
if( right-left+1>globeMax) globeMax = right-left+1;
}
return globeMax;
}
}