zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和

    题目:返回一个整数数组中最大子数组的和。
    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

    求所有子数组的和的最大值。要求时间复杂度为O(n)。

    设计思想:

    从第一个数开始把数组相加,每加一个数对和进行判断,如果小于零,抛弃当前值,如果大于零,下一个数与零比较,小于零时,先将最大值与之前的和比较,在让和加上这个数,如果大于零,直接让和加上这个数,再取最大值和和之间的最大值。

    源代码:

    import java.util.Random;
    
    
    public class max {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int n=20;
            int C[]=new int[n];
            int a=0;
            int MAX=0;
            int b=0;
            
            Random rand=new Random();
            
            for(int i=0;i<n;i++)
            {
                a=rand.nextInt(2);
                if(a==0)
                {
                   C[i]=rand.nextInt(10);
                }
                else
                {
                   C[i]=-rand.nextInt(10);
                }
            }
            
            b=C[0];
            MAX=b;
            for(int i=1;i<n;i++)
            {
                if(b<0)
                {
                    b=C[i];
                    if(MAX<b)
                    {
                       MAX=b;
                    }
                }
                else
                {
                    if(C[i]<=0)
                    {
                        if(MAX<b)
                        {
                            MAX=b;
                        }
                        b=b+C[i];
                    }
                    else
                    { 
                        b=b+C[i];
                        if(MAX<b)
                        {
                            MAX=b;
                        }
                    }
                    
                }
            }
            System.out.print("数组为:");
            for(int i=0;i<n;i++)
            {
                System.out.print(C[i]+" ");
            }
            System.out.println();
            System.out.print("最大数组和为:"+MAX);
        }
        
    }

    运行结果截图:

     

  • 相关阅读:
    测试工作——XML
    js call apply
    JavaScript 作用域和作用域链
    hybird app
    正则表达式
    浏览器渲染原理
    head 头标签(转发)
    参考资料地址
    unix 常用命令
    phantomjs 自动化测试
  • 原文地址:https://www.cnblogs.com/fengyutongxing/p/4360161.html
Copyright © 2011-2022 走看看