Problem: 1732. 找到最高海拔
文章目录
- 题目描述
- 思路及解法
- 复杂度
- Code
题目描述
思路及解法
1.求取数组gain的大小 n n n;
2.定义一个大小为 n + 1 n + 1 n+1的数组preSum;
3.先求取前 n n n个元素的前缀和,再最后单独处理preSum[n];其中preSum[n] = preSum[n - 1] + gain[n - 1];
4.求取处preSum中的最大元素;
复杂度
时间复杂度:
O ( n ) O(n) O(n)
空间复杂度:
O ( n ) O(n) O(n)
Code
class Solution {
public:/*** Prefix sum* * @param gain Given array* @return int*/int largestAltitude(vector<int>& gain) {int n = gain.size();vector<int> preSum(n + 1);int curSum = 0;for (int i = 0; i < n; ++i) {preSum[i] = curSum;curSum += gain[i];}preSum[n] = preSum[n - 1] + gain[n - 1];int maxRes = INT_MIN;for (int i = 0; i < n + 1; ++i) {maxRes = max(maxRes, preSum[i]);}return maxRes;}
};