【LeetCode】Maximum Subarray

版权声明: https://blog.csdn.net/ysq96/article/details/90110139

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.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

题意:题目要求在一个无序数组中找到和最大的子串。

C++:保证当前的sum还是大于0

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res=nums[0];
        int sum=0;
        for(int num:nums){
            if(sum>0)
                sum+=num;
            else
                sum=num;
            res=max(res,sum);
        }
        return res;
    }
};

Python3:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        res = nums[0]
        sum = 0
        for num in nums:
            if sum > 0:
                sum += num
            else:
                sum = num
            res = max(sum,res)
        return res

猜你喜欢

转载自blog.csdn.net/ysq96/article/details/90110139
今日推荐