leetocde 85: Longest Consecutive Sequence
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; } }