标签:c style class blog code java
/** * 获得连续子数组的最大和 * * @author dfeng * */ private static long getMax(long a, long b) { return a > b ? a : b; } /** * 获得连续子数组的最大和 * * @param array * @return 最大和,此处用了Long型是为了表示当参数为null或空时,可以返回null,返回其它任何数字都可能引起歧义。 */ public static Long getMax(int[] array) { if (array == null || array.length <= 0) { return null; } long maxSum = array[0]; // 所有子数组中最大的和 long righteEdge = array[0]; // 右侧子数组的最大和 for (int i = 1; i < array.length; i++) { // 当右侧子数组的最大和为负数时,对于新数组,右侧子数组的最大和为新增加的数。 if (righteEdge < 0) { righteEdge = array[i]; } else { // 为正数时,对于新数组,右侧子数组的最大和为新增加的数 + 原来的最大和。 righteEdge += array[i]; } // 所有子数组中最大的和 maxSum = getMax(righteEdge, maxSum); } return maxSum; } public static void main(String[] args) { int[] array = { -111, -2, -3, -10, -4, -7, -2, -5 }; System.out.println("Max sum: " + getMax(array)); }
第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看),布布扣,bubuko.com
第四章 分治策略 4.1 最大子数组问题 (减治法,别人的,拿来看看)
标签:c style class blog code java
原文地址:http://www.cnblogs.com/xiaojintao/p/3774948.html