剑指 Offer 42题 连续子数组的最大和

剑指offer42题 连续子数组的最大和

    • 题目
    • 思路
    • 代码

题目

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

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

思路

采用动态规划,直接修改原数组,dp[i]的值代表以nums[i]结尾的连续子数组和的最大值

代码

下面展示大小堆的方法 代码片.

// An highlighted block

class Solution {
    public int maxSubArray(int[] nums) {
        int result = nums[0];
        for(int i=1;i<nums.length;i++){
            nums[i] = Math.max(nums[i],nums[i-1]+nums[i]);
            //nums[i] = nums[i-1]>0? nums[i-1]+nums[i]:nums[i];
            result = Math.max(result, nums[i]);
        }
        return result;

    }
}

你可能感兴趣的:(剑指offer刷题)