How to count the maximum consecutive set of numbers in an array with C++

2 Answers

0 votes
#include <iostream>
#include <unordered_set>

int countMaxConsecutiveSetOfNumbers(int arr[], int size) {
    std::unordered_set<int> set;
    
    for (int i = 0; i < size; i++)
        set.insert(arr[i]);

    int mx = 0;
    for (int i = 0; i < size; i++) {
        if (set.find(arr[i] - 1) == set.end()) {
            std::unordered_set<int> :: iterator it;
            int temp = arr[i];
            while (set.find(temp) != set.end())
                temp++;
            mx = std::max(mx, temp - arr[i]);
        }
    }

    return mx;
}
int main()
{
    int arr[] = { 22, 3, 21, 32, 24, 31, 4, 99, 23 };
    
    int size = sizeof(arr) / sizeof(int);
    
    // 21 22 23 24
    
    std::cout << countMaxConsecutiveSetOfNumbers(arr, size);
   
}
 
 
 
 
/*
run:
 
4
 
*/

 



answered Oct 20, 2022 by avibootz
0 votes
#include <iostream>
#include <algorithm>
 
int countMaxConsecutiveSetOfNumbers(int arr[], int size) {
    std::sort(arr, arr + size);
    
    int count = 1, mx = 1;
    
    for (int i = 0;i < size - 1; i++) {
        for (int j = i + 1; j < size; j++) {
            if (arr[j] == arr[i] + 1) {
                count++;
                i++;
            }
            else
                count = 1;
            mx = count > mx ? count : mx;
        }
    }
   
    return mx;
}
int main()
{
    int arr[] = { 22, 3, 21, 32, 24, 31, 4, 99, 23 };
     
    int size = sizeof(arr) / sizeof(int);
     
    // 21 22 23 24
     
    std::cout << countMaxConsecutiveSetOfNumbers(arr, size);
    
}
  
  
  
  
/*
run:
  
4
  
*/

 



answered Oct 21, 2022 by avibootz
...