1732. Find the Highest Altitude
Содержание
Задача
Велосипедист совершает путешествие, которое состоит из n + 1
точек на разных высотах. Путешествие начинается с точки 0, где высота равна 0.
Дан целочисленный массив gain
длиной n
, где gain[i]
— это прирост высоты между точками i
и i + 1
для всех (0 <= i < n
).
Задача - вернуть самую высокую высоту точки.
Подход
В этой задаче, вам нужно пройти по массиву gain
и вычислить текущую высоту на каждом этапе. При этом следует отслеживать самую высокую высоту, которую вы достигли.
- Прирост высоты между точками - это то, сколько велосипедист фактически проехал. Эти данные нам известны.
- Необходимо узнать, где велосипедист оказался после шага 1.
- Чтобы узнать это - мы можем текущую к текущей позиции, где он сейчас, прибавить “прирост”.
- Тогда получаем, что из позиции 0 и прироста -5, велосипедист окажется в новой точке -5 (0 + (-5))
- С новой позиции -5 и прироста 1, окажется в точке -4 (-5 + 1) и т.д.
- Остается посчитать и вернуть самую высокую позицию, в которой был велосипедист.
Алгоритм
- Инициализируем текущую высоту (
current_altitude
) как 0 и максимальную высоту (max_altitude
) как 0. - Проходим через каждый элемент массива
gain
, увеличиваяcurrent_altitude
на значение этого элемента. - Сравниваем
current_altitude
сmax_altitude
. Еслиcurrent_altitude
больше, то устанавливаемmax_altitude
равнымcurrent_altitude
. - Возвращаем
max_altitude
как ответ.
Решение
def largestAltitude(gain):
current_altitude = 0 # текущая высота
max_altitude = 0 # максимальная высота
for i in gain:
current_altitude += i
max_altitude = max(max_altitude, current_altitude)
return max_altitude