LeetCode 53 最大子序和

maximum-subarray

https://www.nowcoder.com/questionTerminal/32139c198be041feb3bb2ea8bc4dbb01

题面描述

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

题解

如果已知以位置$结尾的子数组的最大和,怎么求以位置i结尾的子数组的最大和呢?

  • 一种情况是把这个位置的数和前面的子数组加起来
  • 另一种情况是不要之前的子数组。只要位置上的这个数

这样遍历一遍之后就可以得到以每个位置结尾的子数组的最大值了,然后这里面最大的那一个就是题目所找的具有最大和的连续子数组。

#include<iostream>
#include<vector>
using namespace std;

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int ans=nums[0];
        for(int i = 1 ; i < nums.size() ; i++)
        {
            nums[i]=max(nums[i],nums[i-1]+nums[i]);
            ans=max(nums[i],ans);
        }
        return ans;
    }
};

int main()
{
    Solution s;
    vector<int> num={-2,1,-3,4,-1,2,1,-5,4};
    cout<<s.maxSubArray(num);
    return 0;
}
全部评论

相关推荐

06-12 16:50
已编辑
小米_软件开发(准入职员工)
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
dao_yi:投了1000个左右,回消息的很少,要简历然后说过几天联系的都没有消息了,约面试的基本都是3000左右,足够在当地生活,最后去了一个武汉的3000,干了两天回来考研了,感觉这个行业加班是常态,看能不能考研上岸找个国企,或者大厂。
点赞 评论 收藏
分享
评论
6
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务