力扣【1732. 找到最高海拔】

该文章讲述了如何解决一道编程题,题目要求找到数组中的最大前缀和。作者在读题时误解了问题,但在理解样例后明确了是找起点开始的最大和。文章强调了处理下标越界的问题,并提供了一个C++代码实现,使用vector存储前缀和并初始化长度以避免越界问题。
摘要由CSDN通过智能技术生成

原题链接

传送门!

思路:

这道题目,我读题目的时候是没有读懂它在说什么的,看了下样例后,才明白是求前缀和里面的最大值,而不是区间和,应该说是从起点开始的最大前缀和。
但注意对细节的处理:
即给定的数组下标是从 0 开始的,而求前缀和里面涉及了: i − 1 i-1 i1,而 i i i 最初是 = 0 =0 =0 的,所以说下标越界。

注意 v e c t o r vector vector 类型的数组初始化定义长度: v e c t o r < i n t > s u m ( 长度 ) vector<int> sum(长度) vector<int>sum(长度)

代码:

class Solution {
public:
    int largestAltitude(vector<int>& gain) {
        int n = gain.size();
        int mx = 0;
        vector<int> sum(n+1);   //初始化长度为n+1!

        for (int i=0; i < n; i ++) {
            if (i == 0) sum[i] = gain[i];
            else sum[i] = sum[i-1] + gain[i]; 
        }

        for (int i=0; i < n; i ++) {
            mx = max(mx, sum[i]);
        }

        return mx;
    }
};
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值