Как найти максимум в слайсе?

Junior
204 просмотров
AFK Offer AI

Линейный проход: max := nums[0], потом for _, v := range nums { if v > max { max = v } }. O(n), проще некуда. С Go 1.21 есть slices.Max(nums) из пакета slices. Частая ошибка — инициализировать max нулём (а если все числа отрицательные?). Всегда инициализируй первым элементом. Для пустого слайса — проверка len == 0. На собесе могут спросить про параллельный поиск — делишь на чанки, каждая горутина ищет свой max, потом сравниваешь.

Следующий вопрос

Как reflect влияет на производительность?