Мне задали следующий вопрос в интервью по кодированию -
Commissions {
salesperson: string
recipient: string
ratio: float
}
Sales {
salesperson: string
sales: float
}
Дано: Список объектов комиссий и список объектов продаж.Каждый продавец может передать процент своего заработка другому продавцу, как указано в полях «Получатель» и «Соотношение».
Найти: Общая сумма, полученная каждым продавцом заего собственные продажи и через комиссию от других.Примечание. Для каждого продавца может быть несколько объектов «Комиссионные»
Мое решение: Я создал объект для общего дохода каждого продавца -
Earning {
salesperson: string
earning: float
}
Я создалhashmap с ключом продавца и объекта комиссионных в качестве значения.
Map<String, List<Commissions>> map = new HashMap<>();
Итерация по каждому объекту продаж, поиск объектов комиссий с использованием приведенной выше карты и расчет общего дохода каждого продавца.Храните этот заработок в новом объекте Заработок.
Сложность по времени будет O (sales_size * Commissions_for_the_salesman)
Я смог решить проблему и получить правильный заработок для каждого продавца, но хотел быузнать, какие оптимизации в структурах данных, стиле кодирования и алгоритме возможны здесь.Как видно, эта проблема не сложная, так как же выглядит хорошее решение в таком случае?
Я узнал о новых методах Map, таких как putIfAbsent (), replace () и т. Д., Которые делают код кратким, но любые другие предложения будут полезны.