版权声明: 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