Maximum consecutive numbers present in an array in C++

We are given with an array of positive integers. The goal is to find the maximum number of
consecutive numbers present in it. First of all we will sort the array and then compare adjacent
elements arr[j]==arr[i]+1 (j=i+1), if difference is 1 then increment count and indexes i++,j++ else
change count=1. Store the maximum count found so far stored in maxc.
Arr[]= { 100,21,24,73,22,23 }
Maximum consecutive numbers in array : 4
Explanation − Sorted array is − { 21,22,23,24,73,100 } initialize count=1,maxcount=1
1. 22=21+1 count=2 maxcount=2 i++,j++
2. 23=22+2 count=3 maxcount=3 i++,j++
3. 24=23+1 count=4 maxcount=4 i++,j++
4. 73=24+1 X count=1 maxcount=4 i++,j++
5. 100=73+1 X count=1 maxcount=4 i++,j++
Maximum consecutive numbers is 4 { 21,22,23,24 }
Arr[]= { 11,41,21,42,61,43,9,44 }
Maximum consecutive numbers in array : 4
Explanation − Sorted array is − { 9,11,21,41,42,43,44,61 } initialize count=1,maxcount=1
1. 11=9+1 X count=1 maxcount=1 i++,j++
2. 21=11+1 X count=1 maxcount=1 i++,j++
3. 41=21+1 X count=1 maxcount=1 i++,j++
4. 42=41+1 count=2 maxcount=2 i++,j++
5. 43=42+1 count=3 maxcount=3 i++,j++
6. 44=43+1 count=4 maxcount=4 i++,j++
7. 61=44+1 X count=1 maxcount=4 i++,j++
Maximum consecutive numbers is 4 { 41,42,43,44 }
The integer array Arr[] is used to store the integers.
The integer array Arr[] is used to store the integers.
Integer ‘n’ stores the length of the array.
Integer ‘n’ stores the length of the array.
Function subs( int arr[], int n) takes an array , its size as input and returns the maximum
consecutive numbers present in the array.
Function subs( int arr[], int n) takes an array , its size as input and returns the maximum
consecutive numbers present in the array.
First of all we will sort the array using sort(arr,arr+n)
First of all we will sort the array using sort(arr,arr+n)
Now initialize the count=1 and maxc=1.
Now initialize the count=1 and maxc=1.
Starting from the first two elements, arr[0] and arr[1] inside two for loops, compare if
arr[j]==arr[i]+1 ( j=i+1), if true then increment count and i by 1.
Starting from the first two elements, arr[0] and arr[1] inside two for loops, compare if
arr[j]==arr[i]+1 ( j=i+1), if true then increment count and i by 1.
If the above condition is false again change count to 1. Update maxc with highest count
found so far ( maxc=count>maxc?count:maxc ).
If the above condition is false again change count to 1. Update maxc with highest count
found so far ( maxc=count>maxc?count:maxc ).
In the end return maxc as number of maximum consecutive elements as result.
In the end return maxc as number of maximum consecutive elements as result.
 Live Demo
#include <iostream>
#include <algorithm>
using namespace std;
int subs(int arr[],int n){
   std::sort(arr,arr+n);
   int count=1;
   int maxc=1;
   for(int i=0;i<n-1;i++){
      for(int j=i+1;j<n;j++){
         if(arr[j]==arr[i]+1){
             count++;
            i++;
         }
         else
            count=1;
         maxc=count>maxc?count:maxc;
      }
   }
   return maxc;
}
int main(){
   int arr[] = { 10,9,8,7,3,2,1,4,5,6 };
   int n = sizeof(arr) / sizeof(int);
   cout << "Maximum consecutive numbers present in an array :"<<subs(arr, n);
   return 0;
}
Maximum consecutive numbers present in an array : 10