版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/NCUscienceZ/article/details/86999158
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.
Follow up:
If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.
基础dp
class Solution {
public int maxSubArray(int[] nums) {
int[] dp = new int[nums.length];
int mymax = nums[0];
for (int i = 0; i<nums.length; i++) {
if (i == 0) dp[0] = nums[0];
else{
if (dp[i-1]>0) dp[i] = nums[i] + dp[i-1];
else dp[i] = nums[i];
}
if (dp[i] > mymax) mymax = dp[i];
}
return mymax;
}
}