leetcode week18

来源:互联网 发布:物流线路规划软件 编辑:程序博客网 时间:2024/06/10 23:19

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],

the contiguous subarray [4,-1,2,1] has the largest sum = 6.

问题描述:给定一个数字串,找出和最大的子串。

解题思路:问题描述比较简单。对于一个数字串,从第一个开始逐个累计求和,求和结果与出现过的最大的和作比较,之后检查求和结果,若为0则将求和结果重置为0。最后输出最大和的值即可。注意开始的时候为了考虑只有一个元素或者数字全为负数的状况,不能将最大值的初始值设为0,设为nums[0]即可。注意要先与最大值比较之后再重置,要不然全是负数的话就会出问题。

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


原创粉丝点击