给出一组集......
var sets = new List<HashSet<int>>(numTags);
如何删除作为另一个的正确子集的所有集合?
这是最好的方法吗?
for (int i = 0; i < sets.Count; ++i)
{
for (int j = 0; j < sets.Count; ++j)
{
if (i != j && sets[i].IsProperSubsetOf(sets[j]))
{
sets.RemoveAt(i--);
}
}
}
我正在递减i
,因为我认为一切都被删除之后一切都被轻推了所以我必须再次检查那个插槽。
答案 0 :(得分:3)
var toRemove = sets.Where(s => sets.Any(superset => s.IsProperSubsetOf(superset))).ToList();
foreach (var s in toRemove)
sets.Remove(s);
您不需要s != superset
检查,因为没有设置是其自身的正确子集。
http://en.wikipedia.org/wiki/Proper_subset#proper_subset