/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.HashSet;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static int longestConsecutive(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) set.add(num);
int maxLength = 0;
for (int num : set) {
// Only start counting if it's the beginning of a sequence
if (!set.contains(num - 1)) {
int currentNum = num;
int currentStreak = 1;
while (set.contains(currentNum + 1)) {
currentNum++;
currentStreak++;
}
maxLength
= Math.
max(maxLength, currentStreak
); }
}
return maxLength;
}
public static void main
(String[] args
) { int[] nums = {100, 4, 200, 1, 3, 2};
System.
out.
println("Longest consecutive sequence length: " + longestConsecutive
(nums
)); // Output: 4 }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CiBwdWJsaWMgc3RhdGljIGludCBsb25nZXN0Q29uc2VjdXRpdmUoaW50W10gbnVtcykgewogICAgICAgIEhhc2hTZXQ8SW50ZWdlcj4gc2V0ID0gbmV3IEhhc2hTZXQ8PigpOwogICAgICAgIGZvciAoaW50IG51bSA6IG51bXMpIHNldC5hZGQobnVtKTsKCiAgICAgICAgaW50IG1heExlbmd0aCA9IDA7CgogICAgICAgIGZvciAoaW50IG51bSA6IHNldCkgewogICAgICAgICAgICAvLyBPbmx5IHN0YXJ0IGNvdW50aW5nIGlmIGl0J3MgdGhlIGJlZ2lubmluZyBvZiBhIHNlcXVlbmNlCiAgICAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKG51bSAtIDEpKSB7CiAgICAgICAgICAgICAgICBpbnQgY3VycmVudE51bSA9IG51bTsKICAgICAgICAgICAgICAgIGludCBjdXJyZW50U3RyZWFrID0gMTsKCiAgICAgICAgICAgICAgICB3aGlsZSAoc2V0LmNvbnRhaW5zKGN1cnJlbnROdW0gKyAxKSkgewogICAgICAgICAgICAgICAgICAgIGN1cnJlbnROdW0rKzsKICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RyZWFrKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCBjdXJyZW50U3RyZWFrKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1heExlbmd0aDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gbnVtcyA9IHsxMDAsIDQsIDIwMCwgMSwgMywgMn07CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJMb25nZXN0IGNvbnNlY3V0aXZlIHNlcXVlbmNlIGxlbmd0aDogIiArIGxvbmdlc3RDb25zZWN1dGl2ZShudW1zKSk7IC8vIE91dHB1dDogNAogICAgfQp9CgkKCgo=