CCCPaste

Longest Consecutive Sequence - LeetCode

// Longest Consecutive Sequence - https://leetcode.com/problems/longest-consecutive-sequence/description/

class Solution {

    // Sorting
    // Time Complexity: O(nlogn)
    // Space Complexity: O(1)
    // public int longestConsecutive(int[] nums) {

    //     if(nums.length == 0) {
    //         return 0;
    //     }

    //     int maxCount = 1;
    //     Arrays.sort(nums);

    //     for(int i = 0; i < nums.length - 1; i++) {
    //         int count = 1;
    //         while(i < nums.length - 1
    //             && (nums[i] + 1 == nums[i + 1]
    //                 || nums[i] == nums[i + 1])) {
                

    //             if ( i < nums.length - 1 && nums[i] == nums[i + 1]) {
    //                 i++;
    //                 continue;
    //             }

    //             count++;
    //             i++;
    //         }

    //         if (count > maxCount) {
    //             maxCount = count;
    //         }
    //     }

    //     return maxCount;
    // }

    // HashSet
    // Time Complexity: O(n)
    // Space Complexity: O(n)
    public int longestConsecutive(int[] nums) {
        if(nums.length == 0) {
            return 0;
        }

        Set set = new HashSet<>();

        for(int num: nums) {
            set.add(num);
        }

        int maxCount = 1;
        for(int num: set) {
            if(!set.contains(num - 1)) {
                int count = 1;
                while(set.contains(num + count)) {
                    count++;
                }

                maxCount = Math.max(count, maxCount);
            }
            
        }

        return maxCount;
    }
}