← Arrays

Longest Consecutive Sequence

Medium
Python
def longest_consecutive(nums):
    s=set(nums); best=0
    for n in s:
        if n-1 not in s:
            cur,streak=n,1
            while cur+1 in s: cur+=1; streak+=1
            best=max(best,streak)
    return best
Java
public int longestConsecutive(int[] nums){
    Set<Integer> s=new HashSet<>();
    for(int n:nums) s.add(n);
    int best=0;
    for(int n:s){
        if(!s.contains(n-1)){
            int cur=n,streak=1;
            while(s.contains(cur+1)){cur++;streak++;}
            best=Math.max(best,streak);
        }
    } return best;
}

Key Insight

'not in' vs !contains(). O(n) with hash set.

Python → Java Differences

  • 'not in' vs !contains()
  • max() vs Math.max()
  • O(n) identical
Python
def longest_consecutive(nums):
    s=set(nums); best=0
    for n in s:
        if n-1 not in s:
            cur,streak=n,1
            while cur+1 in s: cur+=1; streak+=1
            best=max(best,streak)
    return best
Java
public int longestConsecutive(int[] nums){
    Set<Integer> s=new HashSet<>();
    for(int n:nums) s.add(n);
    int best=0;
    for(int n:s){
        if(!s.contains(n-1)){
            int cur=n,streak=1;
            while(s.contains(cur+1)){cur++;streak++;}
            best=Math.max(best,streak);
        }
    } return best;
}

Algorithm Steps

1. Set for O(1) lookup
2. Start streak at beginning