publicclassSolution{ publicintFindGreatestSumOfSubArray(int[] array){ if (array.length == 0){return0;} int max = Integer.MIN_VALUE; for (int i = 1; i < array.length; i++){ array[i] = Math.max(array[i],array[i-1]+array[i]); max = Math.max(array[i],max); } return max; } }
其他解法
思路:
通过判断i前的累积是否大于0,来判断是否继续进行累加。
使sum 记录累加值,maxvalue 记录最大值,两者比较,使maxvalue 始终取最大值。
1 2 3 4 5 6 7 8 9 10 11 12 13
publicclassSolution{ publicintFindGreatestSumOfSubArray(int[] array){ int sum=0; int maxvalue=array[0]; for(int i=0;i<array.length;i++){ if(sum<=0){ sum=array[i]; }else{sum=sum+array[i];} maxvalue=Math.max(maxvalue,sum); } return maxvalue; } }