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

 2.环形数组,不要求时间复杂度,但是每个元素只能用一次。但是下面的这个方法有写小瑕疵,不能满足每个元素只能用一次的要求,目前还不知道怎么解决。

 1 package day01;
 2 
 3 import java.util.Scanner;
 4 
 5 public class FindMaxArray {
 6 
 7     public static void main(String[] args) {
 8         // TODO 自动生成的方法存根
 9         int length;//定义数组长度length
10         int n;//定义变化后的数组的长度
11         System.out.println("请输入数组元素个数");
12         Scanner sc = new Scanner(System.in);
13         length=sc.nextInt();
14         n=2*length;
15         
16         int[] a = new int[n];
17         System.out.println("请输入数组中的元素:");
18        
19         for(int i=0;i<length;i++)
20         {
21              a[i] = sc.nextInt();
22         }
23         int max=a[0];
24         int sum=0;//定义求和后的元素
25         for(int i=0;i<length;i++)
26          {
27            sum=0;
28            for(int j=i;j<length+i;j++)
29            {
30               sum=sum+a[j];
31               if(sum>max)
32               {
33                  max=sum;
34               }
35            }
36           a[length+i]=a[i];    //每次将已经计算过的数放到最后
37          }
38         System.out.println("最大子数组的和为:"+max);
39         sc.close();
40     
41 
42     }
43 
44 }

运行结果截图:

猜你喜欢

转载自www.cnblogs.com/mxk123456/p/12380408.html