整数数组的子数组最大之和

题目:输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为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<n;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<n;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);
         
    }
 
}

 

posted @ 2022-03-11 22:01  好(justice)……  阅读(27)  评论(0编辑  收藏  举报