Фильтрация списка от повторяющихся элементов

Для результата из примера нужно оставить первое вхождение каждого значения, а не удалить все значения, встречавшиеся несколько раз. LinkedHashSet сохраняет порядок первого появления.

Короткий ответ

Что ответить на собеседовании

Для результата из примера нужно оставить первое вхождение каждого значения, а не удалить все значения, встречавшиеся несколько раз. LinkedHashSet сохраняет порядок первого появления.

Подробный разбор

Ответ с пояснениями

Условие

Метод получает список целых чисел и возвращает новый список, из которого удалены все повторяющиеся значения.

Вход: [1, 4, 5, 4, 2, 1] Выход: [1, 4, 5, 2]

class Solution {
    public List<Integer> filterDuplicates(List<Integer> numbers) {
        // TODO
    }
}

Ответ

Для результата из примера нужно оставить первое вхождение каждого значения, а не удалить все значения, встречавшиеся несколько раз. LinkedHashSet сохраняет порядок первого появления.

public List<Integer> filterDuplicates(List<Integer> numbers) {
    java.util.Objects.requireNonNull(numbers);
    return new java.util.ArrayList<>(new java.util.LinkedHashSet<>(numbers));
}

Из [1, 4, 5, 4, 2, 1] получится [1, 4, 5, 2]. Исходный список не меняется. Ожидаемое время O(n), дополнительная память O(k). Если во входе есть null, эта реализация сохраняет один null; при запрете таких элементов нужна предварительная валидация.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее