返回一个整数数组中子数组的最大值

要求:

输入整数数组,子数组求和,求子数组的最大值,时间复杂度为0,

设计思想:

随机生成N个整数,规定子数组的个数最大值为3的随机值,先生成一个数n1,在用for循环将前n个数向加赋值给sun[i],再生成一个随机数n2,,将n1到n2 之间的数相加赋值给sun[j++],依次循环,如果n1+n2+······大于N那将最后的和在赋值给sun[j],然后判断sun[]中的最大值,最后输出

public class Test {
    /**
     * @param args
     */
    final static int N=10;
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[] a=new int[N];
        int j=0;
        int k;
        int l=0;
        int[] sum ={0,0,0,0,0,0,0,0,0};
        System.out.print("数组:");
        for(int i=0;i<N;i++)
        {
            a[i]=(int) (Math.random()*40-20);
            System.out.print(a[i]+" ");
        }
        System.out.println();
        k=(int) (Math.random()*3+1);
        j=k;
        for(int i=0;i<N;)
        {    
            sum[l]=sum[l]+a[i];
            if(i<j)
            {    
                i++;
            }
            if(i==j)
            {
                j=j+k;
                k=(int) (Math.random()*3+1);
                l++;            
            }
            if(j>N)
            {
                j=N;
            }
            

        }
        System.out.print("子数组:");
        for(int i=0;i<l;i++)
        {
            System.out.print(sum[i]+"  ");
        }
        System.out.println();
        int max=sum[0];
        for(int i=0;i<l;i++)
        {
            if(sum[i]>max)
                max=sum[i];
        }
        System.out.print("最大子数组:"+max);
    }

}

结果:

原文地址:https://www.cnblogs.com/wj1998/p/7994577.html