/* * 1-1整形数组的最大和 * 给一个整形数组有正负数,求连续子数组的最大的和 * 例如输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为 3, 10, -4, 7, 2 * 因此输出为该子数组的和 18。 */ public class Demo01 { public static void main(String[] args) { int[] a={2,12,11,-5,9,1,-7,-9,10,11}; int maxSubarray = maxSubarray(a,10); System.out.println(maxSubarray); } static int maxSubarray(int a[], int size) { int sum = 0; int max = - (1 << 31); int cur = 0; while (cur < size) { sum += a[cur++]; if (sum > max) { max = sum; } else if (sum < 0) { sum = 0; } } return max; } }
抽点时间看看算法题,还有看图找规律题,最开始找规律找的头发麻,看了一点总算是能总结出点规律了,也能找出规律了。