/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
}
}
class Solution {
public int longestConsecutive( int [ ] nums) {
//present in scaler
HashSet< Integer> completeSet = new HashSet< Integer> ( ) ;
for ( int i = 0 ; i< nums.length ; i++ ) { //creting the complete hashset first
int element = nums[ i] ;
completeSet.add ( element) ;
}
int max = 0 ;
//now for each element n in the hashset if an element less than it exists then we do not need to calculate the subsequence for this element as the n-1th elements consequtive sequence willl always be greater than the current elements//
for ( Integer element
: completeSet
) {
if ( completeSet.contains ( ( element- 1 ) ) ) {
continue ;
}
else {
int length = 1 ;
//otherwise calculate the series
int start = element + 1 ;
while ( completeSet.contains ( ( start) ) ) {
length++;
start++;
}
if ( max< length) {
max = length;
}
}
}
return max;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KfQoKY2xhc3MgU29sdXRpb24gewogICAgcHVibGljIGludCBsb25nZXN0Q29uc2VjdXRpdmUoaW50W10gbnVtcykgewogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIC8vcHJlc2VudCBpbiBzY2FsZXIKICAgICAgICAKICAgICAgICAKICAgICAgICBIYXNoU2V0PEludGVnZXI+IGNvbXBsZXRlU2V0ID0gbmV3IEhhc2hTZXQ8SW50ZWdlcj4oKTsKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICBmb3IoaW50IGkgPSAwIDsgaTxudW1zLmxlbmd0aCA7IGkrKyl7ICAgLy9jcmV0aW5nIHRoZSBjb21wbGV0ZSBoYXNoc2V0IGZpcnN0CiAgICAgICAgICAgIAogICAgICAgICAgICBpbnQgZWxlbWVudCA9IG51bXNbaV07CiAgICAgICAgCiAgICAgICAgICAgIGNvbXBsZXRlU2V0LmFkZChlbGVtZW50KTsgIAogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaW50IG1heCA9IDA7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgLy9ub3cgZm9yIGVhY2ggZWxlbWVudCBuIGluIHRoZSBoYXNoc2V0IGlmIGFuIGVsZW1lbnQgbGVzcyB0aGFuIGl0IGV4aXN0cyB0aGVuIHdlIGRvIG5vdCBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgc3Vic2VxdWVuY2UgZm9yIHRoaXMgZWxlbWVudCBhcyB0aGUgbi0xdGggZWxlbWVudHMgY29uc2VxdXRpdmUgc2VxdWVuY2Ugd2lsbGwgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBlbGVtZW50cy8vCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgZm9yKEludGVnZXIgZWxlbWVudCA6IGNvbXBsZXRlU2V0KXsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKGNvbXBsZXRlU2V0LmNvbnRhaW5zKChlbGVtZW50LTEpKSl7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IDE7CiAgICAgICAgICAgIAogICAgICAgICAgICAvL290aGVyd2lzZSBjYWxjdWxhdGUgdGhlIHNlcmllcwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBlbGVtZW50ICsxOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIHdoaWxlKGNvbXBsZXRlU2V0LmNvbnRhaW5zKChzdGFydCkpKXsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBsZW5ndGgrKzsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBzdGFydCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYobWF4PGxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgbWF4ID0gbGVuZ3RoOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgcmV0dXJuIG1heDsKICAgICAgICAKICAgICAgICAKICAgIAogICAgICAgIAogICAgfQp9