数组中连续子数组的最大和(LeetCode53. 最大子序和)

题目

解析

时间复杂为O(n)的算法。遍历数组的每个元素,记录当前元素的加和结果sum,和记录遍历到当前元素的最大和result。假设当前数组nums,遍历到下标为i的元素上,如果之前的sum值小于0,sum设为nums[i],因为与负值相加只会让结果更小。sum大于等于0时,sum设为sum与nums[i]的和,这时的结果会更大。比较sum值和result值,如果sum更大,更新result记录下这个更大的值。

代码

public int maxSubArray(int[] nums) {
    int result = nums[0]; int sum = nums[0];
    for(int i = 1; i < nums.length; ++i){
        if(sum < 0){
            sum = nums[i];
        } else {
            sum = sum + nums[i];
        }
        if(sum > result){
            result = sum;
        }
    }
    return result;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容