给你一个整数数组 nums
,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
直接上代码
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
// 数组从键盘输入个数
int arrayLength = in.nextInt();
int [] array = new int[arrayLength];
for(int i = 0; i < arrayLength; i++) {
array[i] = in.nextInt();
}
System.out.print(maxSubArray(array));
}
// maxSubArray 求最大子序和的方法
public static int maxSubArray(int[] nums) {
int pre = 0;
int ans = Integer.MIN_VALUE;
for(int x: nums){
pre = Math.max(pre+x, x);
ans = Math.max(ans, pre);
}
return ans;
}
}
上测试结果: