53. Maximum Subarray

  1. 问题

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.

  1. 描述

    这道题是找到数组中的子数组使子数组和为最大值,并返回最大值,一开始想的是从头开始进行相加找到最大值,但是思路错误,因为这样子数组起始位置固定从头开始,改变思路(百度)哈哈,然后发现思路有一丝丝一样,依然找找数组相加的最大和,但是如果为负值将sum置位0继续求最大值,如果全为负数则找到负数中最大的一个负数,如果有正数则寻找正数与混杂着中间的负数相加的最大值,思路就是两个正数相加永远和为最大。

3.代码

public static int maxSubArray(int[] nums) {
        int sum = 0;
        int retInt = Integer.MIN_VALUE;
        for (int num : nums) {
            sum += num;
            retInt = Math.max(sum,retInt);
            if (sum < 0){
                sum = 0;
            }
        }
        return retInt;
    }

你可能感兴趣的:(java基础)