Если у вас есть два списка уникальных предметов, и порядок не имеет значения, вы можете думать о них как в наборах, а не списки
Если вы думаете, диаграммы Венна, со списком А, как один круг и список B как другой, то пересечение этих двух является постоянным пулом.
Удалите все элементы в этом пересечении как с А, так и с B, и все, что осталось в A, было удалено, в то время как все, что осталось в B, было добавлено.
Итак, Перебрать ищем для каждого элемента в B. Если вы ее нашли, удалить его из А и В
Тогда А список вещей, которые были удалены, и B представляет собой список вещей которые были добавлены
Я думаю ...
[править] Хорошо, с новым ограничением «только 2 контейнера», то же самое по-прежнему имеет место
foreach(A) {
if(eleA NOT IN B) {
DELETED
}
}
foreach(B) {
if(eleB NOT IN A) {
ADDED
}
}
Тогда вы не Constru вырезать новый список или уничтожить ваши старые ... но это займет больше времени, как в предыдущем примере, вы можете просто перебрать более короткий список и удалить элементы с более длинного. Здесь вам нужно сделать оба списка
Я бы поспорил мое первое решение не использовать 4 контейнера, он просто уничтожил два ;-)
Не могли бы вы уточнить ваш вопрос. Что такое алгоритм AN для вычисления добавленных и удаленных? не имеет особого смысла ... – jbleners 2008-09-24 13:40:15
Это не сайт для «обсуждения». Возможно, вы могли бы прочитать FAQ. – 2008-09-24 13:43:07
«AN» относится к Уведомлению. Один за один ответ? – 2008-09-24 17:28:12