连续字数组的最大和
连续子数组的最大和
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;
}


查看26道真题和解析