本题经典贪心算法,因为这个条件是连续子序列,所以只要不断的算他的和,在取最大的就好,在这个过程中,只要是相加大,就记录,只要相加为负数了,那么这个子序列肯定是错误的,进行一下判断,加的这个数>0就从他开始从头算,<0就从0算,最后返回最大的就好
public int maxSubArray(int[] nums) {
int sum = 0;
int res = nums[0];
for (int num : nums) {
sum+=num;
if (sum > res) {
res=sum;
}
if (sum < 0) {
if (num > 0) {
sum=num;
}else {
sum=0;
}
}
}
return res;
}