【2022-11-19每日一题】1732. 找到最高海拔[Easy]
2022-11-19
1分钟阅读时长
2022-11-19每日一题:1732. 找到最高海拔
难度:Easy
标签:数组 、 前缀和
有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1
个不同海拔的点组成。自行车手从海拔为 0
的点 0
开始骑行。
给你一个长度为 n
的整数数组 gain
,其中 gain[i]
是点 i
和点 i + 1
的 净海拔高度差(0 <= i < n
)。请你返回 最高点的海拔 。
示例 1:
输入:gain = [-5,1,5,0,-7] 输出:1 解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。
示例 2:
输入:gain = [-4,-3,-2,-1,4,3,2] 输出:0 解释:海拔高度依次为 [0,-4,-7,-9,-10,-6,-3,-1] 。最高海拔为 0 。
提示:
n == gain.length
1 <= n <= 100
-100 <= gain[i] <= 100
方法一:一次遍历,前缀和(差分数组)
golang
func largestAltitude(gain []int) int {
ans, sum := 0, 0
for _, v := range gain {
sum += v // 前缀和
ans = max(ans, sum) // 维护最大值
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
// 省略max函数写法
func largestAltitude(gain []int) int {
ans, sum := 0, 0
for _, v := range gain {
sum += v // 前缀和
// 维护最大值
if ans < sum {
ans = sum
}
}
return ans
}
php
class Solution {
/**
* @param Integer[] $gain
* @return Integer
*/
function largestAltitude($gain) {
$ans = $total = 0;
foreach($gain as $g) {
$total += $g;
$ans = max($ans, $total);
}
return $ans;
}
}
复杂度分析
- 时间复杂度:O(n)。
- 空间复杂度:O(1)。