一个整形数组(有正有负),求数组中连续子数组(最少有一个元素)的最大和,要求时间复杂度O(n) 。
java代码实现:
public static void main(String[] args) {
int[] a= {2,-3,5,-3,5,7,-8,1,3,-5,6};
int maxvalue =a[0]; //最大和
int add=0; //第0-i个元素的和
int j=0; //最大下标
for (int i = 0; i < a.length; i++) {
add=add+a[i];
if (add>maxvalue) {
maxvalue=add;
j=i;
}
}
System.out.println("最大和"+maxvalue);
System.out.println("最大下标"+j);
}