Как удалить все элементы из списка 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), но для этого необходимо, чтобы объекты сортировались.
- сортировать два списка объекта. // п * журнала (п)
- Пройдите по списку B, если элементы B[i] существуют в списке A, удалите его, это можно сделать за один цикл.
- Если вы хотите сохранить порядок происхождения в списке A, вам нужно удалить соответствующие элементы из списка источников A напрямую.