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

Posted 芬芳指法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个整数数组中子数组的最大值相关的知识,希望对你有一定的参考价值。

要求:

输入整数数组,子数组求和,求子数组的最大值,时间复杂度为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);
    }

}

结果:

 

以上是关于返回一个整数数组中子数组的最大值的主要内容,如果未能解决你的问题,请参考以下文章

练习数值计算。找出一个整数数组中子数组之和的最大值。

8.19 数组中子数组的最大累乘积

定义一个整型数组,返回该数组中子数组和的最大值

[程序员代码面试指南]数组和矩阵问题-数组中子数组的最大累乘积

返回一个二维整数数组中最大子数组的和

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