Leetcode 53题
题目描述:给你一个整数数组nums请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和
解题思路:
利用动态规划,我们只需求出每个位置的连续子序列最大值,
再返回每个位置子序列最大值中较大的那个就可以。
因此若数组nums为[-2,1,-3,4,-1,2,1,-5,4],当nums[i]>0时,nums[i+1] += nums[i].
可以得到子序列和最大值的数组为[-2,1,-2,4,3,5,6,1,5]
可以看出 最大的子序列和为6
代码如下:
class Solution {
public int maxSubArray(int[] nums) {
//动态规划
int a = 0;
int max = nums[0];
for (int b : nums) {
a = Math.max(a+b,b);
max = Math.max(max,a);
}
return max;
}
}