Junior
47
Erzähle, wie deine Lösung für die erste Aufgabe aufgebaut ist (einzigartige Elemente mit Beibehaltung des letzten Vorkommens) und wie ihre Komplexität ist.
Unternehmen wurden gefragt
ИП Ганус Александр Андреевич
Antwort von AI
sobes.tech KI
Для нахождения уникальных элементов с сохранением последнего вхождения можно пройтись по списку с конца к началу, сохраняя элементы во множество (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).