Longest Consecutive Sequence

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

Your algorithm should run in O(n) complexity.

Example:

Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
class Solution {
    public int longestConsecutive(int[] nums) {
        HashMap<Integer, Boolean> map = new HashMap<>();
        for (int x : nums) {
            map.put(x, true);
        }
        int maxLen = 0;
        for (int x : map.keySet()) {
            if (map.get(x) == true) {
                int temp = x;
                int currentLen = 0;
                while (map.containsKey(temp)) {
                    currentLen++;
                    map.put(temp, false);
                    temp++;
                }
                temp = x - 1;
                while (map.containsKey(temp)) {
                    currentLen++;
                    map.put(temp, false);
                    temp--;
                }
                maxLen = Math.max(maxLen, currentLen);
            }
        }
        return maxLen;
    }
}

Last updated