Как удалить все элементы из списка A, которые также есть в списке B?

Я ищу removeAll эквивалент для C.

Я проясню свой вопрос на простом примере.

У меня есть список структур типа Элемент.

Element** list1 = {A, B, C, D, E F}

Также есть второй список

Element** list2 = {B, E}

Теперь я хочу удалить все элементы из list1, которые также содержатся в list2. Я также хочу, чтобы мой list1 был перераспределен.

Результирующий список содержит элементы {A, C, D, F}.

Используемая структура данных должна быть массивом, поскольку я хочу очень быстро искать элементы по индексу.

Я сам разработал решение. К сожалению, мне нужно было слишком много петель.

1 ответ

Я могу дать вам решение n*log(n), но для этого необходимо, чтобы объекты сортировались.

  1. сортировать два списка объекта. // п * журнала (п)
  2. Пройдите по списку B, если элементы B[i] существуют в списке A, удалите его, это можно сделать за один цикл.
  3. Если вы хотите сохранить порядок происхождения в списке A, вам нужно удалить соответствующие элементы из списка источников A напрямую.
Другие вопросы по тегам