53. Maximum Subarray(Easy)(dp)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
    }
}

猜你喜欢

转载自blog.csdn.net/NCUscienceZ/article/details/86999158