题目链接:https://leetcode-cn.com/problems/maximum-subarray/
解题思路:
要想求出最大和的连续子数组,假设数组长度为n,i从索引0到n-1,用f(i)代表以第i个数结尾的连续子数组的最大和,那么我们的目标就是求出MAX(f(i))。
那么我们如何求出每个位置的f(i)呢,我们要比较f(i-1)+nums[i]和nums[i]的大小,再把比较出来的较大值和max比较,循环n-1次,得到最后的最大和。
下面是解题代码:
class Solution {
public int maxSubArray(int[] nums) {
int pre = 0, maxAns = nums[0];
for (int x : nums) {
pre = Math.max(pre + x,x);
maxAns = Math.max(maxAns,pre);
}
return maxAns;
}
}