Узким местом в вашем коде является не двойное l oop. Вы должны go по всем пунктам, и это именно то, что вы делаете.
Узким местом является сортировка, которая может быть O((n*m)log(n*m))
- где n
- это число "друзей", а m
- это среднее количество предметов на друга.
Это можно сделать, однако, в O(n*m)
, выбрав мудрую сортировку (например, сортировка ведра ) или даже отсортировав элементы по мере необходимости. сборка itemsMap
.
Причина, по которой вы можете получить более высокую производительность, чем обычная сортировка, заключается в том, что размер каждого элемента ограничен, а сумма всех этих элементов составляет самое большее n*m
.