查找和删除具有最小属性值的元素的集合更快

我正在尝试解决Kattis指南针卡销售问题。为此,我有一个具有唯一性属性的Card对象列表。我必须开始删除唯一性最小的卡片,并在每次删除后重新计算唯一性值。

我的解决方案可以工作,但是由于时间限制,它无法通过第8个测试用例。我尝试将卡保留为SortedSet,但效果比List差。然后我尝试使用HashSet,但没有任何区别。

while (CardList.Count > 1)
            {
                CalculateUniqueness();

                Card leastUnique = CardList.Min();
                //Card leastUnique = CardList.OrderBy(p => p.TotalUniqueness).ThenByDescending(p => p.Id).First();

                Console.WriteLine(leastUnique.Id);

                CardList.Remove(leastUnique);
            }

编辑: Card类的CompareTo方法:

public int CompareTo(object obj)
        {
            Card otherCard = (Card)obj;
            int uniquenessComparison = TotalUniqueness.CompareTo(otherCard.TotalUniqueness);
            if (uniquenessComparison != 0)
            {
                return uniquenessComparison;
            }
            else
            {
                return otherCard.Id.CompareTo(Id);
            }
        }
min_garden 回答:查找和删除具有最小属性值的元素的集合更快

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3166220.html

大家都在问