It’s an easy problem with the description being:
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.
Constraints:n == gain.length
1 <= n <= 100
-100 <= gain[i] <= 100
To get to know the highest altitude you need to know at every position what’s the altitude and compare with a pointer and when is bigger you use that value, otherwise just keep looking at it.
Since the problem depends on previous altitudes (negative ones as well) you need to sum them as you go to make sure that you are on the highest as possible when comparing it:
class Solution {
public int largestAltitude(int[] gain) {
// create variables that will be used for the resolution of this problem
int highestAltitude = 0;
int sumNetGainAltitude = 0;
for(int i=0 ; i<gain.length ; i++) {
// add the current altitutde index into the sum net gain
sumNetGainAltitude += gain[i];
// this will avoid any negative values and values that are not bigger than the highest altitude
if(sumNetGainAltitude > highestAltitude) highestAltitude = sumNetGainAltitude;
}
return highestAltitude;
}
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Find the Highest Altitude.
Memory Usage: 39.7 MB, less than 97.89% of Java online submissions for Find the Highest Altitude.
That’s it! If there is anything thing else to discuss feel free to drop a comment, if I missed anything let me know so I can update accordingly.
Until next post! :)