265. 最大非负子序和
给定一个整数数组
A
,找到一个具有最大和的连续子数组(子数组最少包含一个元素,并且 每个元素都必须是
非负整数
),返回其最大和
样例
输入:[1,2,-3,4,5,-6]输出:9解释:A[0]=1A[1]=2A[0]+A[1]=3A[3]=4A[4]=5A[3]+A[4]=9
注意事项
如果
A
数组每个元素都是负值,那么返回-1
1 \leq A.length \leq 10^5
1
≤
A
.
l
e
n
g
t
h
≤
1
0
5
0 \leq |A_i| \leq 1000
0
≤
∣
A
i
∣
≤
1
0
0
0
public class Solution {
/**
* @param A: an integer array
* @return: return maxium contiguous non-negative subarray sum
*/
public int maxNonNegativeSubArray(int[] A) {
// write your code here
int ret=-1;
int max=0;
boolean flag=false;
for (int value : A) {
if (value >= 0) {
max = max + value;
flag=true;
} else {
if (max > 0) {
ret = Math.max(ret, max);
}
max = 0;
}
}
if (flag)
ret = Math.max(ret, max);
return ret;
}
}