Я пытаюсь решить проблему Каттис Продажа карт компаса. Для этого у меня есть объекты List of 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);
}
Редактировать: метод сравнения класса карты:
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);
}
}