整数数组的子数组最大之和
题目:输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)
过程:(1)定义一个整数数组
(2)找连续m个比m-1大的数,然后赋值给max.
package diyibufen; import java.util.Scanner; public class yibufen { public static void main(String[] args) { int a[]=new int [100]; int i; int b=0; Scanner in=new Scanner(System.in); System.out .println("请输入数组的个数"); int n=in.nextInt(); for(i=0;i) { a[i]=in.nextInt();//输入数组 } while(a[i]>0) { b=i; i++; } if(b==n-1) System.out.println("要求有负数"); int max=0; for(i=1;i ) { if(a[i]+a[i-1]>a[i])//连续数组,并且连续2个比一个大 { a[i]=a[i]+a[i-1]; if(a[i]>max) max=a[i]; } } System.out.println("子数组的最大值为:"+max); } }