Find the Highest Altitude

Description

There is a biker going on a road trip. The road trip consists of n + 1 points at different altitudes. The biker starts his trip on point 0 with altitude equal 0. You are given an integer array gain of length n where gain[i] is the net gain in altitude between points i and i + 1 for all (0 <= i < n). Return the highest altitude of a point.

Example 1:
Input: gain = [-5, 1, 5, 0, -7]
Output: 1
Explanation: The altitudes are [0, -5, -4, 1, 1, -6]. The highest is 1.

Example 2:
Input: gain = [-4, -3, -2, -1, 4, 3, 2]
Output: 0
Explanation: The altitudes are [0, -4, -7, -9, -10, -6, -3, -1]. The highest is 0 (the starting point).

Constraints

  • n == gain.length
  • 1 <= n <= 100
  • -100 <= gain[i] <= 100

Signature

def solution(gain: list[int]) -> int: ...

Complexity

  • Time: O(n)
  • Space: O(1)

Hints

Pattern
Prefix sum / Running sum
Approach
Start at altitude 0. Add each gain to current altitude. Track the maximum altitude seen (including the starting 0).
Complexity
Track running altitude and max altitude in single pass

Solutions

def solution(gain):
    highest = 0
    curr = 0
    for i in range(len(gain)):
        # alt[0] = 0
        # alt[1] = gains[1] - alt[0]
        # alt[2] = gain[2] - alt[1]
        # ...
        alt = gain[i] + curr
        highest = max(highest, alt)
        curr = alt

    return highest