There is an array sorted in descending order. How to make two identical elements disappear and instead enter one to 1 more.
that is, something like this
[12 8 8 6 4 3 3] => [12 9 6 5 ]
Something like this .
#include <iostream> #include <vector> int main () { std::vector <int> v = {12, 8, 8, 6, 4, 3, 3}; for(size_t i=0; i<v.size()-1; i++) { if(v[i]==v[i+1]) { v[i]++; v.erase(v.begin()+i+1); i=0; } } for(auto&x:v)std::cout << x << " "; return 0; }
In general, if someone will also look for something like that, they helped in the English version.
vector<int> v(c, c + mn);
where с
is an array, mn
is long.
for (int i = 0; i < v.size() - 1; i++) { if (v[i] == v[i + 1]) { while (i + 1<v.size() && v[i + 1] == v[i]) v.erase(v.begin() + i + 1); v[i]++; i = 0; } } for (auto&x : v)std::cout << x << ".";
Source: https://ru.stackoverflow.com/questions/501015/
All Articles