26. Longest Consecutive Sequence

Topic :

arrays

Difficulty :

medium

Problem Link :


problem statement

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

You must write an algorithm that runs in O(n) time.

Example 1:

Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
Example 2:

Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9

Constraints:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

solution

import  java.io.*;
import java.util.*;
class Longest_Consequtive_Sequence
{ 
    static int longestConsequtive(int nums[])
    { Set<Integer> hashSet=new HashSet<Integer>();
        for(int ele: nums)
         hashSet.add(ele);
         
         int longestStreak=0;
         for(int num :nums)
         { if(!hashSet.contains(num-1))
             { int currNum=num;
                 int currStreak=1;
                 
                 while(hashSet.contains(currNum+1))
                 { currNum+=1;
                     currStreak+=1;
                    }
                    longestStreak=Math.max(longestStreak,currStreak);
                }
            }
         return longestStreak;
    }
    public static void main (String args[])
    { 
       int nums[]={100,4,200,1,3,2};
       System.out.println(longestConsequtive(nums));
       
    }
}
Copyright © 2023 KIZLE. - All Rights Reserved.
Website by Kounik Maitra