Sobes.tech
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).