如何删除所有真子集?
给定一个集合列表...
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
,因为我假设所有内容在被删除后都会被调低一个,所以我必须再次检查该插槽。
Given a list of sets...
var sets = new List<HashSet<int>>(numTags);
How can I remove all the sets that are a proper subset of another?
Is this the best way to do it?
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'm decrementing i
because I assume everything gets nudged down one after it gets removed so I have to check that slot again.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不需要
s != superset
检查,因为没有集合是其自身的真子集。http://en.wikipedia.org/wiki/Proper_subset#proper_subset
You don't need
s != superset
check, cause no set is a proper subset of itself.http://en.wikipedia.org/wiki/Proper_subset#proper_subset