Дан слайс положительных чисел, отсортированный по неубыванию, с повторами.
Уберите дубликаты, не выделяя новую память: результат должен лежать в том
же массиве, что и вход.
// Dedup удаляет повторы на месте и возвращает nums[:k] с уникальными значениями.
func Dedup(nums []int) []int
Примеры
[2, 4, 4, 5, 7, 9, 10, 10, 13] → [2, 4, 5, 7, 9, 10, 13]
[1, 1, 1] → [1]
[] → []
Ограничения
0 ≤ len(nums) ≤ 10⁶.
- Ноль аллокаций; результат — префикс исходного слайса (тот же backing array).
- O(n) по времени.
Устно: что после вызова увидит код, который продолжает пользоваться
исходным nums? Что в хвосте nums[k:]?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.