zoukankan      html  css  js  c++  java
  • 求一个数组的最大子数组之和

    题目要求:输入一个整型数组,数组里有正数也有负数

            数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和

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

    设计思想

    求出所有连续子数组的和,然后进行比较。用array[0]来作为max的初始值.数组里有正数有负数,当与负数相加,如果和小于等于0,最大值等于未加负数之前的和,与正数相加则等于加正数之后的和。

    代码:

    import java.util.Scanner;
    
    public class Array{
    
        public static void main(String[] args) {
            
            System.out.print("请输入数组的长度N=");
            Scanner scan=new Scanner(System.in);
            int length=scan.nextInt();
            int arr[]=new int[length];
            for(int i=0;i<length;i++){
                arr[i]=(int)(10-Math.random()*20);  //产生-10到10的随机数
            }
            
            int arr2[]=new int[2*length];
            for(int i=0;i<2*length;i++){
                if(i<length){
                	arr2[i]=arr[i];
                }
                else{
                    arr2[i]=arr[i-length];
                }
            }
            
            System.out.print("数组:{ ");
            for(int i=0;i<length;i++){
            	System.out.print(arr[i]+" ");
            }    
            System.out.println("}");    //输出这个数组
            
            int max=0;
            int curSum=0;
            int M[]=new int[length];
            for(int s=0;s<length;s++){
            	
            	for(int j=s;j<s+length;j++){
            		if(j==s){
            			max=arr2[j];
            			curSum=max;
            			continue;
                    }
            		if(curSum<0){
            			curSum=0;
            		}
                
            		curSum+=arr2[j];
            		if(curSum>max){
            			max=curSum;
            		}
                }
            	M[s]=max;
            }
            int LL=Largest(M,length);
            System.out.println("最大子数组的和为:"+LL);
        }
        public static int Largest(int list[],int length)
        {
            int i,max=list[0];
    
            for(i=0;i<=length-1;i++)
            {
                if(list[i]> max){
                    max=list[i];
                }
            }    
            return max;
        }
    }
    

      

  • 相关阅读:
    2.性能测试类型或方法
    3.性能测试通过标准
    下一个问题主题是啥呢?内网渗透深化?Java安全
    ThinkPHP5 RCE在PHP7下getshell
    泛微ecology OA数据库配置信息泄露
    渗透经验之SQL注入深化
    匿名伪造邮件发送脚本
    payload免杀之Installutil.exe&csc.exe利用
    记一次草鸡垃圾的域渗透
    内网渗透之frp使用
  • 原文地址:https://www.cnblogs.com/lzxw/p/6659896.html
Copyright © 2011-2022 走看看