Find the Highest Altitude

# Find the Highest Altitude

# 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.
#

#
# Approach 1: Creating an additional array
#

# @param {Integer[]} gain
# @return {Integer}
def largest_altitude(gain)
  arr = [0]

  # calculate altitude array
  (1..gain.count).each do |pointer|
    sum = arr[pointer - 1] + gain[pointer - 1]
    arr.push(sum)
  end

  # find maximum altitude
  max = 0
  arr.each { |i| max = i if max < i }
  max
end

gain = [-5, 1, 5, 0, -7]
largest_altitude(gain)
# Output: 1

gain = [-4, -3, -2, -1, 4, 3, 2]
largest_altitude(gain)
# Output: 0

#
# Approach 2: Without creating an additional array
#

# @param {Integer[]} gain
# @return {Integer}
def largest_altitude(gain)
  max_alt = alt = 0

  (0...gain.count).each do |i|
    alt += gain[i]

    max_alt = alt if max_alt < alt
  end

  max_alt
end

gain = [-5, 1, 5, 0, -7]
largest_altitude(gain)
# Output: 1

gain = [-4, -3, -2, -1, 4, 3, 2]
largest_altitude(gain)
# Output: 0
Algerlogo

Β© Alger 2022

About us

We are a group of programmers helping each other build new things, whether it be writing complex encryption programs, or simple ciphers. Our goal is to work together to document and model beautiful, helpful and interesting algorithms using code. We are an open-source community - anyone can contribute. We check each other's work, communicate and collaborate to solve problems. We strive to be welcoming, respectful, yet make sure that our code follows the latest programming guidelines.