有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1
个不同海拔的点组成。自行车手从海拔为 0
的点 0
开始骑行。
给你一个长度为 n
的整数数组 gain
,其中 gain[i]
是点 i
和点 i + 1
的 净海拔高度差 ( 0 <= i < n
)。请你返回 最高点的海拔 。
示例 1:
<b>输入:</b>gain = [-5,1,5,0,-7]
<b>输出:</b>1
<b>解释:</b>海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。
示例 2:
<b>输入:</b>gain = [-4,-3,-2,-1,4,3,2]
<b>输出:</b>0
<b>解释:</b>海拔高度依次为 [0,-4,-7,-9,-10,-6,-3,-1] 。最高海拔为 0 。
提示:
n == gain.length
1 <= n <= 100
-100 <= gain[i] <= 100
难度 Easy
标签 数组
前缀和
思路 今天这是一道简单题。读完题看了2个示例,发现都是从海平面高度为0的地方出发,如果第一个高度为-5,那么就相当于在走下坡,到海平面下面去了。如果下一个数为正数代表开始走上坡路。但是每个数都是相对上一个位置的相对上坡/下坡的高度。其实就是让我们求每个位置的绝对海拔,然后把最大的那个海拔给说出来。
那思路就很简单了,直接一个线性遍历 就OK拉!~
func largestAltitude(gain []int) int {
// 先把上一个位置 和 最高的位置 都初始化为0
last, max := 0, 0
// 开始遍历所有节点
for _, v := range gain {
last += v
if last > max {
max = last
}
}
// 当我走完所有节点就知道哪里最高了。
return max
}
力扣题库地址 https://leetcode-cn.com/problems/find-the-highest-altitude