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;
}

results matching ""

    No results matching ""