// Есть массив целых чисел 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;
}