Ctrl K

Не больше двух копий

Средняя
Массив values отсортирован по неубыванию. Оставьте каждое значение не больше двух раз, убрав лишние копии прямо в этом массиве, без копии. Пусть после чистки остаётся k элементов. Измените values так, чтобы его первые k элементов были результатом в исходном порядке; что лежит дальше, неважно. Верните k. Попробуйте обойтись одним проходом и O(1) дополнительной памяти.
Пример 1
values=[3, 3, 3, 3, 8, 9, 9] → 5

Из четырёх троек остаются две. Функция возвращает 5, а массив начинается с [3, 3, 8, 9, 9, …].

Пример 2
values=[-4, 0, 0, 2] → 4

Ни одно значение не встречается больше двух раз, массив не меняется: ответ 4.

Пример 3
values=[6, 6, 6] → 2
Ограничения
  • 1 ≤ len(values) ≤ 3·10⁴
  • -10⁴ ≤ values[i] ≤ 10⁴
  • values отсортирован по неубыванию
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяСледующая расстановка по порядку Средняя
загружаем Python…
Вход
values=[3, 3, 3, 3, 8, 9, 9]
Ожидается
5

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 131 тест на сервере, включая скрытые.