题目描述:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] num=new int[n];
for(int i=0;i<n;i++)
num[i]=sc.nextInt();
System.out.println(maxSum(num));
}
public static int maxSum(int[] num){
int sum=0;
int maxSum=Integer.MIN_VALUE;
for(int i=0;i<num.length;i++){
if(sum<=0){//每次检验到上一个元素位置 累加的和 如果和小于等于0 则舍弃 因为之后的加上这部分不会更大了
sum=num[i];//这样当第一个元素就小于零的时候 不会永远找不到最大和
}else{
sum=sum+num[i];
}
if(sum>maxSum){
maxSum=sum;
}
}
return maxSum;
}
}