
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
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.
Input
Arr[]= { 100,21,24,73,22,23 }
Output
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 }
Input
Arr[]= { 11,41,21,42,61,43,9,44 }
Output
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 }
Approach used in the below program is as follows
The integer array Arr[] is used to store the integers.
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.
First of all we will sort the array using sort(arr,arr+n)
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.
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.
Example
#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; }
Output
Maximum consecutive numbers present in an array : 10