Longest Consecutive Sequence
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Clarification
Your algorithm should run in O(n) complexity.
Example
Given[100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is[1, 2, 3, 4]. Return its length:4.
Solution: Use a set to find consecutive sequence.
public int longestConsecutive(int[] nums) {
if(nums == null || nums.length == 0) {
return 0;
}
HashSet<Integer> set = new HashSet<Integer>();
for(int i = 0; i < nums.length; i++) {
set.add(nums[i]);
}
int res = 0;
for(int i = 0; i < nums.length; i++) {
if(set.contains(nums[i])) {
int count = 0;
int number = nums[i];
while(set.contains(number)) {
set.remove(number);
number++;
count++;
}
number = nums[i] - 1;
while(set.contains(number)) {
set.remove(number);
number--;
count++;
}
res = Math.max(res, count);
}
}
return res;
}