TGViewer
Библиотека Go для собеса | вопросы с собеседований Библиотека Go для собеса | вопросы с собеседований @go_interview_lib · 7.47K subscribers
Post #1391 1.64K
Как удалить дубликаты из отсортированного среза за O(n)

Раз срез отсортирован, все одинаковые значения лежат подряд.

Мы заводим индекс записи, который показывает на последний уникальный элемент, и одним проходом идём дальше по срезу. Как только встречаем значение, отличное от того, что уже записано, сдвигаем индекс записи и кладём туда новый элемент. Получается классический приём медленного и быстрого указателя, всё в один проход за O(n) и без дополнительной памяти.

В конце мы возвращаем срез, обрезанный по длине индекса записи.

func dedup[T comparable](s []T) []T {
if len(s) < 2 {
return s
}
w := 1
for i := 1; i < len(s); i++ {
if s[i] != s[w-1] {
s[w] = s[i]
w++
}
}
return s[:w]
}


🐸 Библиотека Go для собеса
  • 👍 1
More from @go_interview_lib
  1. Sep 18, 2026А вы уже забрали свой подарок ко Дню программиста? К вашему профессиональному празднику Tp…
  2. Sep 15, 2026❓ Какой максимальный размер бинарного файла можно собрать В Go нет встроенного ограничения…
  3. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  4. Aug 4, 2026❓ Объясните разницу между безопасным доступом к байтам строки через срез и использованием…
  5. Aug 4, 2026Покупать новый курс каждый раз, когда меняется рабочая задача, — довольно странная механик…
  6. Aug 4, 2026👅 Самое сложное — выбрать не курс, а направление Сегодня хочется разобраться в AI-агентах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →