1. 程式人生 > >返回一個整數數組中子數組的最大值

返回一個整數數組中子數組的最大值

alt 時間復雜度 1+n style png 分享圖片 static 依次 圖片

要求:

輸入整數數組,子數組求和,求子數組的最大值,時間復雜度為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); } }

結果:

技術分享圖片

返回一個整數數組中子數組的最大值