题目:
给定一个整数数组 nums
找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例 1:
输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
思路:
遍历数组,依次求子序列总和,如果大于0则一直相加
每一次循环 判断一次 最大总和 与 子序列总和 的大小
最后返回最大总和
题解:
public class MaxSubArray {
public static int maxSubArray(int[] nums) {
int result = nums[0];//以数组 第一位 假设最大总和
int subSum = 0;
for(int x : nums) {
if(subSum > 0) {
//证明子序列总和大于0
subSum += x;
}else {
subSum = x;
}
result = Math.max(result, subSum);
}
return result;
}
public static void main(String[] args) {
int[] nums ={-2,1,-3,4,-1,2,1,-5,4};
int max = maxSubArray(nums);
System.out.println(max);
}
}