Есть код c++11:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> a{1,2,3,4,5,6,7,8,9};
for(auto it=a.begin(); it!=a.end();)
{
if (*it % 2)
{
it=a.erase(it);
}
else
{
++it;
}
}
for(auto& i:a)std::cout<<i<<',';
}
Какая сложность алгоритма?)
…
Мой ответ O(N). Ответ интервьюера O(N*N), т.к. после каждого удаления вектор «перестраивается или что».