Longest Consecutive Subsequence

#include <bits/stdc++.h>
using namespace std;
const int K = 1e5 + 10;
int hsh[K];

int ans(int arr[], int N){
    int maxi = arr[0];
    for(int i=0;i<N;i++){
        maxi = max(maxi, arr[i]);
        hsh[arr[i]] = 1;
    }

    int start;
    for(int i=0;i<=maxi+1;i++){
        if(hsh[i] == 0){
            start = i+1;
            break;
        }
    }

    int len;
    if(start) len = start-1;
    else len = 1;
    for(int i=0;i<=maxi + 1;i++){
        if(hsh[i] == 0){
            len = max(len, i - start);
            start = i+1;
        }
    }
    return len;
}

int main(){
    int N;
    cin >> N;

    int arr[N];

    for(int i=0;i<N;i++) cin >> arr[i];

    cout << ans(arr, N) << endl;
 
    return 0;
}

Comments

  1. https://practice.geeksforgeeks.org/problems/longest-consecutive-subsequence2449/1#

    ReplyDelete

Post a Comment

Popular Posts