В какой коллекции быстрее найти и удалить элемент с минимальным значением свойства - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь решить проблему Каттис Продажа карт компаса. Для этого у меня есть объекты 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);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...