今日总结:3.11课堂小测(一维数组的最大子数组的和(整数))

package test;
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int i,j,k=0,z=0,flag=0,max=0;
int sum=sc.nextInt();
int[] array=new int[sum];
for(i=0;i<sum;i++)
{
array[i]=sc.nextInt();
}
max=array[0];
for(i=0;i<sum;i++)
{
for(j=i;j<sum;j++)
{
k+=array[j];
if(k>max)
{
flag=1;
max=k;
}
}
k=0;
}
System.out.println(max);
}
}
本次时间复杂度为 n^2
思路:先大循环进行从首到尾的占位,及内循环的起始位置。在内循环中,从首位到末尾之前的每一位进行求和,得出最大的值交给max。再进行大循环的占位(改变内循环的起始位置)。这样可以得出所有的求和的值,最终得出子数组最大的值。

浙公网安备 33010602011771号