Junior
52
Räägi, kuidas on üles ehitatud sinu esimese ülesande lahendus (unikaalsete elementide leidmine säilitades viimase sissetungi) ja milline on selle keerukus.
Ettevõtted, kust küsiti
ИП Ганус Александр Андреевич
Vastus AI-lt
sobes.tech AI
Для нахождения уникальных элементов с сохранением последнего вхождения можно пройтись по списку с конца к началу, сохраняя элементы во множество (Set) для отслеживания уже встреченных значений. При этом добавлять элементы в результат только если их ещё нет в множестве. После прохода нужно перевернуть результат, чтобы восстановить исходный порядок с последними вхождениями.
Пример на Dart:
List<T> uniqueLast<T>(List<T> list) {
final seen = <T>{};
final result = <T>[];
for (var i = list.length - 1; i >= 0; i--) {
if (!seen.contains(list[i])) {
seen.add(list[i]);
result.add(list[i]);
}
}
return result.reversed.toList();
}
Сложность алгоритма — O(n), где n — длина списка, так как мы проходим по списку один раз и операции с множеством выполняются за амортизированное O(1).