LeetCode 每日一题 [62] 连续子数组的最大和

LeetCode 连续子数组的最大和 [简单]

输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

要求时间复杂度为O(n)。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof

示例1:

输入: nums = [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

提示:

1 <= arr.length <= 10^5
-100 <= arr[i] <= 100

题目分析
解法1

因为数组中有正数也有负数,所以当和小于0的时候,一定是不满足条件,所以当和小于0,则需要重新开始计算和

代码实现
public class MaxSubArray {
    public static void main(String[] args) {
        int[] nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
        System.out.println(maxSubArray(nums));
    }

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

你可能感兴趣的:(LeetCode 每日一题 [62] 连续子数组的最大和)