Даны два слайса, каждый отсортирован по неубыванию (внутри могут быть
повторы). Слить их в один отсортированный слайс без повторяющихся значений.
func MergeUnique[T cmp.Ordered](a, b []T) []T
Требования
- Результат строго возрастает и содержит каждое значение, которое есть хотя
бы в одном входе, ровно один раз.
- Время O(len(a) + len(b)) — входы уже отсортированы, сортировать заново не нужно.
- Без
map: память под результат выделяется один раз.
- Входные слайсы не меняются, в том числе их массивы за пределами
len.
nil и пустые входы допустимы.
Пример
MergeUnique([]int{1, 3, 3, 5}, []int{2, 3, 6, 6}) // [1 2 3 5 6]
MergeUnique(nil, []int{4, 4}) // [4]
Устно: чем это решение лучше «склеить, отсортировать, убрать дубли»? Как
слить k отсортированных слайсов?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.