[leetcode]53Maximum Subarray动态规划经典题目:最大子串问题

Posted stAr_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode]53Maximum Subarray动态规划经典题目:最大子串问题相关的知识,希望对你有一定的参考价值。

/**
 * Find the contiguous subarray within an array (containing at least one number)
 * which has the largest sum.

 For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
 the contiguous subarray [4,-1,2,1] has the largest sum = 6.

 click to show more practice.

 More practice:
 If you have figured out the O(n) solution,
 try coding another solution using the divide and conquer approach, which is more subtle.
动态规划的经典题目,最大子串问题
 动态方程:locMAX[i] = max(locMAX[i-1] + nums[i],nums[i])
 locMAX表示局部最大的子串,必须要包含现在的数nums[i],每遍历一个数,状态都要更新
 还要设置一个全局最大数,gloMAX = max(locMAX[i],gloMAX),意思是:
 如果最后结果包括局部的子串,那么全局就是这个局部,如果不包含这个局部,那么全局还是前边的全局
 */
public class Q53MaximumSubarray {
    public static void main(String[] args) {
        int[] nums = new int[]{-2,1,-3,4,-1,2,1,-5,4};
        System.out.println(maxSubArray(nums));
    }
    public static int maxSubArray(int[] nums) {
        int glo = nums[0];
        int loc = nums[0];
        for (int i = 1; i < nums.length; i++) {
            loc = Math.max(loc + nums[i],nums[i]);
            glo = Math.max(glo,loc);
        }
        return glo;
    }
}

 

以上是关于[leetcode]53Maximum Subarray动态规划经典题目:最大子串问题的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 53. Maximum Subarray

leetcode 53. Maximum Subarray

Leetcode 53 Maximum Subarray

41. leetcode 53. Maximum Subarray

Leetcode53 Maximum Subarray

LeetCode练题——53. Maximum Subarray