my
class Solution {
public int maxSubArray(int[] nums) {
int result = nums[0];
int target = nums[0];
int k = 0;
if(nums.length == 1)
{
return nums[0];
}
for(int j = k; j < nums.length; j++)
{
target = nums[k];
if(target > result)
{
result = target;
}
for(int i = k+1; i < nums.length; i++)
{
target = target + nums[i];
if(target > result)
{
result = target;
}
}
k++;
}
return result;
}
}
官方动态规划:
前面的sum大于0才加,否则存位当前的值,每次都与保存的最大值比较
class Solution {
public int maxSubArray(int[] nums) {
int ans = nums[0];
int sum = 0;
for(int num: nums) {
if(sum > 0) {
sum += num;
} else {
sum = num;
}
ans = Math.max(ans, sum);
}
return ans;
}
}