给定一个整数数组,因为数组中不同的且连续的子序列有不同的和,返回数组中子序列最大的和值
举例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解题思路:
sum 为子序列之和,sum >0 则说明结果有增,则sum 保留当前遍历数字
如果sum <=0,则说明sum对结果无增益效果,需要舍弃,则sum直接更新为当前遍历数字
每次比较sum和ans的大小,将最大值置为ans,遍历结束返回结果
时间复杂度为O(n)
class Solution
{
public int maxSubArray(int[] nums)
{
if (nums == null || nums.length == 0)
{
return 0;
}
int sum = 0;
int ans = nums[0];
for(int i = 0; i < nums.length; i++)
{
if (sum > 0)
{
sum += nums[i];
}
else
{
sum = nums[i];
}
ans = Math.max(ans, sum);
}
return ans;
}
}