如何删除列表A中列出B的所有元素?

时间:2015-11-11 21:18:19

标签: c arrays removeall

我正在寻找C的removeAll等价物。

我将用一个简单的例子澄清我的问题。

我有一个结构类型列表元素。

checkout

还有第二个清单

git svn

现在我要删除list1中包含在list2中的所有元素。 我还希望我的list1能够重新分配。

结果列表包含{A,C,D,F}元素。

使用过的数据结构必须是一个数组,因为我想快速查找索引上的元素。

我自己开发了一个解决方案。不幸的是我需要太多循环。

1 个答案:

答案 0 :(得分:1)

我可以给你n * log(n)解决方案,但是这需要对象是可排序的。

  1. 对两个对象列表进行排序。 //的n * log(n)的
  2. 浏览列表B,如果列表A中存在元素B [i],则将其删除,这可以在一个循环中完成。
  3. 如果要保留列表A的原始顺序,则需要直接从原始列表A中删除匹配的项目。