【个人作业】数组

要求:

返回一个整形数组,数组里有正数也有负数

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

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

 

 1 package 个人作业1;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Main {
 6     public static void main(String[] args)
 7     {
 8         int LONG=20;                    //数量
 9         int range=LONG/2;                    //-n ~ +n
10         int i=0,t=0;
11         Scanner input=new Scanner(System.in);
12         int [] num=new int[LONG];
13         int [] kuai=new int[LONG];
14         int sum=0,max=0,aMax=num[0];
15         for(int k=0; k<LONG; k++)
16         {
17             num[k]=(int)(1+Math.random()*range*2)-range;
18             System.out.print(num[k]+"   ");
19         }
20         System.out.println();
21         System.out.println("——————————————————————————————————————");
22         
23         //从第一个开始加直到最大,中途记录
24         for(i=0;i<num.length;i++)//起始
25         {
26             t=0;
27             max=num[t];//赋初值
28             for(sum=num[t+i];t<num.length-i-1;t++)//
29             {
30                 if(max<=sum)//比较,记录最大
31                 {
32                     max=sum;
33                     
34                 }
35                 sum=sum+num[t+1+i];
36             }
37             if(aMax<=max)
38             {
39                 aMax=max;
40             }
41             System.out.print(max+"   ");
42             
43         }
44 
45         System.out.println();
46         System.out.println();
47         System.out.println(aMax);
48         
49 
50     }
51 }
Main

 

转载于:https://www.cnblogs.com/gothic-death/p/10508192.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值