连续字数组的最大和
连续子数组的最大和
http://www.nowcoder.com/questionTerminal/459bd355da1549fa8a49e350bf3df484
把每种结果都要算出来进行比对,首先从数组第一个元素开始,算出以这个元素为起始点的最大连续元素和, 然后在算出以第二个元素为起始点的最大元素和,与上一次算出的进行比对,保留最大值,并返回。
public int findGreatestSumOfSubArray(int[] array) { if(array.length==0) return 0; else{ //计算机能取到的int类型最小值 int max=Integer.MIN_VALUE; //以第一个元素为起始点的最大连续向量和 int tempMax=Max(array); //从第二个元素开始,依次与前一个元素算出的最大连续向量和进行比较 for(int i=1;i<array.length;i++){ if(max<tempMax){ max=tempMax; } //将数组第一个元素删除,形成新的数组 int[] newArray=new int[array.length-i]; for(int j=0;j<newArray.length;j++) { newArray[j]=array[j+i]; } tempMax=Max(newArray); } return max; } } private int Max(int[] array){ int[] temp=new int[array.length]; int sum=0; for(int i=0;i<array.length;i++){ sum=sum+array[i]; temp[i]=sum; } Arrays.sort(temp); //数组的最后一个元素是最大值 int element=temp[temp.length-1]; return element; }