Find the Highest Altitude

Easy Prefix Sum

Problem

Given an integer array gain representing the net gain in altitude between consecutive points, return the highest altitude reached after all gains are applied starting from altitude 0.

  • 1 ≤ gain.length ≤ 100
  • −100 ≤ gain[i] ≤ 100

Example

Input: gain = [-5,1,5,0,-7]
Output: 1

Starting at altitude 0, the altitudes after each gain are: 0 + (-5) = -5, -5 + 1 = -4, -4 + 5 = 1, 1 + 0 = 1, 1 + (-7) = -6. The highest altitude reached is 1. The algorithm iterates through the gain array, updating the current altitude by adding each gain and tracking the maximum altitude seen so far. The critical moment is when the altitude reaches 1 after the third gain, which becomes the highest altitude.

Approach

Straightforward Solution

A brute-force approach would compute the altitude at each point by summing all gains up to that point repeatedly, resulting in O(n²) time complexity, which is inefficient for larger inputs.

Core Observation

The altitude at each point is the cumulative sum of all previous gains starting from zero. The problem reduces to finding the maximum prefix sum of the gain array when starting from zero.

Path to Optimal

Preview

Recognizing that altitude updates are cumulative sums suggests using a running total (prefix sum) to track altitude efficiently. By iterating once through the gain array and updating the current altitude incrementally, the algorithm achieves O(n) time complexity…

Full step-by-step walkthrough on Pro

Optimal Approach

Preview

Initialize altitude and highest altitude to zero. Iterate through the gain array, incrementally update altitude by adding each gain, and update highest altitude if the current altitude exceeds it…

Full step-by-step walkthrough on Pro

Want the full reasoning chain?

Unlock the complete walkthrough, line-by-line analysis, and recall drill.

Unlock Pro

Time

O(n)

The algorithm iterates through the gain array once, performing constant time operations per element.

Space

O(1)

Only a fixed number of variables are used to track the current altitude and highest altitude, regardless of input size.

Pattern Spotlight

Prefix Sum (Running Total Tracking)

When a problem involves cumulative changes over a sequence and asks for a maximum or minimum state reached, maintain a running total and track the extremum during a single pass to achieve optimal efficiency.

Solution

Python
1class Solution:
2 def largestAltitude(self, gain: list[int]) -> int:
3 altitude = 0
4 highest = 0
5
6 for change in gain:
7 altitude += change
8 highest = max(highest, altitude)
9
10 return highest

Step-by-Step Solution

1

Accumulate Altitude Changes and Update Maximum Altitude

3altitude = 0
4highest = 0
6for change in gain:
7 altitude += change
8 highest = max(highest, altitude)
10return highest

Objective

To iterate through each gain, update the current altitude, and track the highest altitude reached so far.

Key Insight

The altitude at each point is the sum of all previous gains plus the starting altitude zero. By maintaining a running total, the algorithm efficiently computes the altitude at each step without redundant summations. Simultaneously tracking the maximum altitude ensures the final answer is available immediately after one pass.

Interview Quick-Check

Core Logic

Maintain a running sum of altitude changes and update the maximum altitude whenever the current altitude exceeds the previous maximum.

State & Boundaries

Initialize altitude and highest altitude to zero to correctly handle cases where all gains are negative or zero.

Common Pitfalls & Bugs

Failing to initialize highest altitude to zero can cause incorrect results if the highest altitude is the starting point before any gains.

Complexity

This approach achieves O(n) time and O(1) auxiliary space by avoiding nested loops and extra data structures.

Line Analysis

This solution has 2 Critical lines interviewers watch for.

Line 7 Critical
altitude += change

Update the current altitude by adding the current gain.

This running total reflects the altitude at the current point, avoiding repeated summations and enabling efficient tracking.

Line 8 Critical
highest = max(highest, altitude)

Update the highest altitude if the current altitude exceeds it.

Tracking the maximum altitude during iteration ensures the algorithm returns the correct highest altitude without extra passes or storage.

Full line-by-line criticality + rationale for all 6 lines available on Pro.

Test Your Understanding

Why is it sufficient to track the running altitude and update the highest altitude in a single pass rather than computing all altitudes first?

See the answer with Pro.

Related Problems

Prefix Sum pattern

Don't just read it. Drill it.

Reconstruct Find the Highest Altitude from memory until it sticks. AlgoDrill blanks out key lines and makes you fill them back in, step by step.

Unlock the Find the Highest Altitude drill

or drill a free problem