有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。
给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回 最高点的海拔 。
例子:
输入:gain = [-5,1,5,0,-7]
输出:1
解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。
输入:gain = [-5,1,5,0,-7]
输出:1
解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。
解题思路:
循环法
其实题意理解清楚, 这道题很简单
留意下 gain[i] 是点 i 和点 i + 1 的 净海拔高度差
例如: 初始海拔0, 以 gain = [-5,1,5,0,-7]为例,
gain[0] = -5, 第一海拔点: 0, 第二个海拔点: -5; -5 - 0 = -5
gain[1] = 1, 第二海拔点: -5, 第三个海拔点: -4; -4 - (-5) = 1
gain[2] = 5, 第三海拔点: -4, 第四个海拔点: 1; 1 - (-4) = 5
gain[3] = 0, 第四海拔点: 1, 第五个海拔点: 1; 1 - 1 = 0
gain[4] = -7, 第五海拔点: 1, 第六个海拔点: -6; -6 - 1 = -7
看上面的例子我们可以看到海拔点的依次为 [0,-5,-4,1,1,-6], 则最高海拔为 1
代码:
未翻译版
func largestAltitude(_ gain: [Int]) -> Int {
var result = 0, temp = 0
for i in gain {
temp = temp + i
result = max(result, temp)
}
return result
}
翻译版
func largestAltitude(_ gain: [Int]) -> Int {
// 定义最终值, temp为各个海拔点
var result = 0, temp = 0
// 循环
for i in gain {
// 找到下一个海拔点
temp = temp + i
// 取海拔点的最大值
result = max(result, temp)
}
// 返回最大值
return result
}
题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
网友评论