Есть список метрик устройств. Нужно построить отображение «значение метрики →
список ID устройств с этим значением».
type Metric struct {
Device int
Score float64
}
func GroupByScore(metrics []Metric) map[float64][]int
Требования
- В каждой группе устройства идут в том же порядке, что во входе.
- Дробные значения — отдельные ключи:
91 и 91.5 — разные группы.
- Пустой вход → пустая map (длина 0).
- Входной срез не меняется.
Пример
GroupByScore([]Metric{{1, 95}, {2, 91}, {3, 40}, {4, 91}, {5, 91.5}})
// map[40:[3] 91:[2 4] 91.5:[5] 95:[1]]
func GroupLatest(metrics []Metric) map[float64][]int
- Одно устройство может встречаться во входе несколько раз. Учитывается только
его последняя метрика, и каждое устройство попадает ровно в одну группу.
- Внутри группы ID отсортированы по возрастанию.
- Группы, в которых не осталось устройств, в результат не попадают.
Устно: чем опасны float64 в роли ключа map? Что будет с NaN?
Разбор и эталонное решение — после своей попытки: на собеседовании подсказок не будет.
Сначала попробуй сам — подсказки не дают готовый ответ.