public class LongArray {
/**
* 基本思路:我们只关心数的正负,当遇到一个正数时可以无条件加入到子串中
* 当遇到一个负数如果其让所有数的和小于零则最大值不能包括它最大值只可能在其
* 前面或者后面,而我们统计了它前面的最大值所以从后面开始算;如果它不会使整个串小于零
* 就从接着加下去。
* */
public int maxsumofSubarray (int[] arr) {
int result = Integer.MIN_VALUE;
int sum = 0;
for(int i = 0;i < arr.length;i++){
if(sum + arr[i] > 0){
sum = sum + arr[i];
if(sum > result){
result = sum;
}
}else{
sum = 0;
}
}
return result;
}
}
子数组最大累加和问题
最新推荐文章于 2021-06-30 17:08:03 发布