找到最高海拔
问题:
有一个自行车手打算进行一场公路骑行,这条路线总共由 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 。
- 根据给出的数组求出海拔高度的数组。
- 对数组降序排序。
- 返回数组首元素即为最高点的海拔。
class Solution {
public:
int largestAltitude(const vector<int>& gain) {
vector<int> res;
res.push_back(0);
for(auto& g : gain) {
res.push_back(g + res.back());
}
sort(res.rbegin(), res.rend()); // 使之降序排列
return res.front();
}
};
法二 ------ 不创建新数组,用中间变量求最大值法。
class Solution {
public:
int largestAltitude(const vector<int>& gain) {
auto var = 0;
auto res = 0;
for(auto& g : gain) {
var += g;
res = max(res, var);
}
return res;
}
};