values отсортирован по неубыванию. Оставьте каждое значение не больше двух раз, убрав лишние копии прямо в этом массиве, без копии.
Пусть после чистки остаётся k элементов. Измените values так, чтобы его первые k элементов были результатом в исходном порядке; что лежит дальше, неважно.
Верните k.
Попробуйте обойтись одним проходом и O(1) дополнительной памяти.values=[3, 3, 3, 3, 8, 9, 9] → 5
Из четырёх троек остаются две. Функция возвращает 5, а массив начинается с [3, 3, 8, 9, 9, …].
values=[-4, 0, 0, 2] → 4
Ни одно значение не встречается больше двух раз, массив не меняется: ответ 4.
values=[6, 6, 6] → 2
values отсортирован по неубываниюvalues=[3, 3, 3, 3, 8, 9, 9]
5
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 131 тест на сервере, включая скрытые.