Дан список строк. Верните строки, которые встречаются в нём больше одного раза.
Каждую такую строку — ровно один раз, в порядке её первого появления
во входе.
// Duplicates возвращает строки, встречающиеся в words хотя бы дважды.
func Duplicates(words []string) []string
Примеры
["x", "yy", "yy", "xx", "q", "x"] → ["x", "yy"]
["a", "a", "a"] → ["a"]
["a", "b"] → []
Ограничения
0 ≤ len(words) ≤ 10⁶. Регистр важен: "A" и "a" разные; пустая строка —
обычный элемент.
- Входной слайс не изменять.
- Ожидается O(n) в среднем (по числу строк, считая длину строк ограниченной).
Перебор пар O(n²) — это и есть «неоптимальное решение», которое просят
ускорить на собесе.
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.