поиск отсутствующих чисел в массиве
13.01.2024
// Есть массив целых чисел vector < int > произвольнойго размера
// Нужно получить список отсутствующих в массиве чисел 
// от нуля до самого большого числа в массиве.
// Например, массив содержит :  2 , 5 , 6 , 10 
// Алгоритм должен вернуть числа отсутствующие в этой последовательности
// т.е.  :  0 , 1 , 3 , 4 , 7 , 8 , 9
 
#include <vector>  
   
void Not_In_List_Numbers ( vector<int>& Numbers, vector<int>& Output )
{
    size_t Current_Number   = 0;
    size_t Last_Number      = 0;
    size_t TempVal          = 0;
    size_t Difference       = 0;
 
    sort( Numbers.begin(), Numbers.end());
 
    size_t Counter = Numbers.size();
 
    for ( size_t i = 0; i < Counter; ++i )
    {
        TempVal = Numbers [i];
 
        if ( TempVal > Last_Number )
        {
            Current_Number = TempVal - 1;
             
            Difference = Current_Number - Last_Number;
 
            while ( Difference > 0 )
            {
                Output.push_back ( ++Last_Number );
                --Difference;
            }
 
            Current_Number = Last_Number = TempVal;
        }
    }
}  
   
 
int main(int argc, char* argv[])
{
    vector<int> Numbers { 6, 3, 15, 7, 13, 6, 11, 4, 2, 9 };
    vector<int> Output;
 
    Not_In_List_Numbers ( Numbers, Output );
 
    cout << "Numbers : \n";
    for ( auto x: Output )
      cout << x << " , ";
 
    return 0;
 
}