letecode [53] - Maximum Subarray

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Example:

Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.

题目大意:

  给定数组,找到具有最大和的连续子数组,返回该最大和。

理  解:

  初始最大和max、临时数值sum和为nums[0]。

  当sum<0 时,若下一个数nums[i] 大于sum,则sum重新设置为nums[i]。

  当sum>0时,直接加上下一个数nums[i]。

  每次都需将sum与最大和max比较,更新max值。

代 码 C++:

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

运行结果:

  执行用时 : 12  ms  内存消耗 :  9.4 MB

猜你喜欢

转载自www.cnblogs.com/lpomeloz/p/10972182.html