我提供了从.NET 2.0中的通用列表中删除重复项的解决方案,如下所示:

List<CaseStudy> caseStudies = CaseStudyDAO.FindCaseStudiesByDate(DateTime.Now.Date, DateTime.Now.Date.AddDays(1));
caseStudies.RemoveAll(
        delegate(CaseStudy c)
        {
            return caseStudies.IndexOf(c) != caseStudies.FindIndex(
                delegate(CaseStudy f) { return c.Str == f.Str; });
        });


我的问题是:

有更有效的方法吗?仅限.NET 2.0解决方案
上述解决方案的复杂性是什么?

谢谢,
jan2k10

最佳答案

RemoveAll的时间复杂度为O(n)。索引的时间复杂度为O(n),因此总计为O(n ^ 2)时间复杂度。我认为空间复杂度为O(1)。

有更有效的方法吗?是。只要您愿意在上面花费更多的空间,就可以以O(n)的时间复杂度进行操作。

关于c# - 从通用列表中删除重复项<T>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2594632/

10-10 14:04