Назад к вопросам
Senior
3
Опиши алгоритм решения задачи maxSegment
Компании, где спрашивали
Яндекс
Ответ от нейросети
sobes.tech AI
Алгоритм решения задачи maxSegment обычно сводится к поиску максимального сегмента (подмассива) в массиве, удовлетворяющего определённому условию. Например, если задача — найти максимальную сумму подмассива, можно использовать алгоритм Кадане:
- Инициализировать две переменные:
maxEndingHereиmaxSoFarзначением первого элемента массива. - Итерироваться по массиву с второго элемента:
- Обновлять
maxEndingHereкак максимум между текущим элементом и суммойmaxEndingHere + текущий элемент. - Обновлять
maxSoFarкак максимум междуmaxSoFarиmaxEndingHere.
- Обновлять
- По окончании итерации
maxSoFarбудет содержать максимальную сумму подмассива.
Пример на Go:
func maxSegment(arr []int) int {
maxEndingHere, maxSoFar := arr[0], arr[0]
for _, v := range arr[1:] {
if maxEndingHere < 0 {
maxEndingHere = v
} else {
maxEndingHere += v
}
if maxEndingHere > maxSoFar {
maxSoFar = maxEndingHere
}
}
return maxSoFar
}
Если условие задачи другое, алгоритм может быть адаптирован, но идея — эффективно проходить по массиву, обновляя текущий максимум и сохраняя лучший результат.