Find the Highest Altitude

Jay ChoukseyJay Chouksey
3 min read

Introduction

Today, I tackled an interesting problem from LeetCode 75: Find the Highest Altitude. This easy-level question requires knowledge of arrays and prefix sums. It involves finding the highest altitude reached during a biker's road trip. Let's dive into the problem statement, approach, and solution.

Problem Statement

There is a biker going on a road trip consisting of n + 1 points at different altitudes. The biker starts his trip at point 0 with an altitude of 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.

Constraints:

  • n == gain.length

  • 1 <= n <= 100

  • -100 <= gain[i] <= 100

Approach to Solve the Problem

To solve this problem, we can use a prefix sum approach to calculate the altitude at each point and then find the highest altitude. Here are the steps involved:

  1. Initialize Variables: Start with an initial altitude of 0 and a variable to track the maximum altitude.

  2. Calculate Altitudes: Iterate through the gain array and update the altitude for each point.

  3. Find Maximum Altitude: Compare each calculated altitude with the current maximum and update if necessary.

Solution

Here’s the Java code that implements the above approach:

public static int largestAltitude(int[] gain) {
    int n = gain.length;
    int max = 0;

    for(int i = 1; i < n; i++){
        gain[i] += gain[i-1];
    }

    for(int i = 0; i < n; i++){
        max = Math.max(max,gain[i]);
    }

    return max;
}

Explanation

  1. Initialization: The variable max is initialized to 0 to track the highest altitude.

  2. Prefix Sum Calculation: The gain array is modified in-place to hold the prefix sums, representing the altitude at each point.

  3. Finding the Maximum Altitude: The second loop iterates through the modified gain array to find the highest altitude.

Performance

This solution efficiently calculates the highest altitude with a time complexity of O(n), where n is the length of the array. The prefix sum approach ensures that we only need to traverse the array a couple of times, making it both time and space efficient.

Conclusion

This problem is a great example of how prefix sums can be used to solve array-related problems efficiently. Understanding this technique is essential for tackling various other problems in competitive programming and real-world applications.

I hope you found this explanation helpful. Stay tuned for more daily blogs on interesting problems and concepts I encounter in my learning journey!

0
Subscribe to my newsletter

Read articles from Jay Chouksey directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Jay Chouksey
Jay Chouksey

💡 Passionate about Core Java, currently diving deep into Data Structures & Algorithms and Advanced Java. Always eager to learn and share knowledge. 🚀