题目
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
思路
第一次接触到动态规划的算法,学习的官方题解思路。需要设立两个变量,maxSum存储最大子序和,pre存储加到前一项的值。如果pre小于了,那么可以直接舍弃前面这个和为负数的序列。看代码再模拟一下就比较清晰了。
代码
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0;
int maxSum = nums[0];
int n = nums.length;
// if (n == 1) {
// return nums[0];
// } else {
for (int i = 0; i < n; i++) {
pre = Math.max(nums[i], nums[i] + pre);
maxSum = Math.max(maxSum, pre);
}
// }
return maxSum;
}
}