Вот вопрос с codewars.com
Учитывая список и число N, создайте новый список, который содержит каждое число lst не более N раз без переупорядочения. Например, если N = 2, а ввод [1,2,3,1,2,1,2,3], вы берете [1,2,3,1,2], отбрасываете следующее [1,2 ], поскольку это приведет к тому, что 1 и 2 будут в результате 3 раза, а затем - 3, что приводит к [1,2,3,1,2,3].
И вот мой код:
std::vector<int> deleteNth(std::vector<int> arr, int n)
{
int counting = 0;
int counting2 = 0;
for (int i : arr)
{
for (int j : arr)
{
cout << arr.size() << " " << counting<<" "<<counting2<<endl;
if (i == j)
{
++counting;
if (counting > n) { arr.erase(arr.begin() + counting2); --counting2; }
}
counting2++;
}
counting = 0;
counting2 = 0;
}
return arr;
Базовые тесты c в порядке. Но когда я пытаюсь их случайный тест. Это беспорядок.
Ожидается: равно [8, 32, 32, 8, 8, 26, 26, 8, 19, 26, 26, 19, 26, 26, 19, 8, 8, 19, 26, 8, 8, 19, 32, 32, 26, 50, 19, 32, 32, 32, 19] Фактические: [8, 32, 32, 8, 8, 26, 26, 8, 19, 26 , 26, 19, 26, 26, 19, 8, 8, 19, 26, 8, 8, 19, 32, 26, 50, 19, 32, 32, 19]