题目
https://leetcode-cn.com/problems/maximum-subarray/
给定一个整数数组 nums , 找到一个具有最大和的连续子数组(子数组最少包含一个元素), 返回其最大和.
思路
动态规划
- 维护当前总和 和 最大总和
- 如果当前总和大于 0, 那么继续累计, 否则重新赋值
- 默认当前总和是 0, 最大总和是数组的 0 元素
- 将当前总和和最大总和比较, 更大的值赋值给最大总和, 最终会返回该结果
代码
public int maxSubArray(int[] nums) {
int result = nums[0];
int sum = 0;
for (int num : nums) {
if (sum > 0) {
sum += num;
} else {
sum = num;
}
result = Math.max(result, sum);
}
return result;
}