题解 | #最大子数组和#
子数组的最大累加和问题
http://www.nowcoder.com/practice/554aa508dd5d4fefbf0f86e5fe953abd
package org.example.test;
/**
* 子数组最大求和公式:
* 如果以数组下标结尾的前面最大子数组和+arr[i+1]>=arr[i+1],则i+1的最大子数组和为arr[i]+前面i结尾的子数组和
* 如果小于,则i+1的最大子数组和为arr[i+1];
*/
public class MaxSumTest {
public static void main(String[] args) {
int[] nums = {1, -2, 3, 5, -2, 6, -1};
System.out.println(maxsumofSubarray(nums));
}
public static int maxsumofSubarray(int[] arr) {
int max = arr[0];
int now = 0;
for (int value : arr) {
now = Math.max(value + now, value);
max = Math.max(now, max);
}
return max;
}
}
算法 文章被收录于专栏
数据结构和算法


查看3道真题和解析