美文网首页
最大子数组,时间复杂度O(n)

最大子数组,时间复杂度O(n)

作者: 剪刀手麦小孩 | 来源:发表于2017-11-04 22:43 被阅读0次

    描述

    给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。

    思路

    一次循环,开始初始化一个sum用于保存和,当这个和为负数时,将其置零。可以理解为当一个子数组的和为负数时,不再参与后续的计算,因为算的结果一定会更小。

    代码

    public class Solution {
        /*
         * @param nums: A list of integers
         * @return: A integer indicate the sum of max subarray
         */
        public int maxSubArray(int[] nums) {
            // write your code here
            int max = Integer.MIN_VALUE;
            int sum = 0;
            for (int i = 0; i < nums.length; i++) {
                sum += nums[i];
                if (sum < 0) {
                    sum = 0;
                } else {
                    if (sum > max) {
                        max = sum;
                    }
                }
            }
            return max;
        }
    }
    

    相关文章

      网友评论

          本文标题:最大子数组,时间复杂度O(n)

          本文链接:https://www.haomeiwen.com/subject/rhwqmxtx.html