美文网首页
LeetCode 53 Kadane's algorithm

LeetCode 53 Kadane's algorithm

作者: kmarx | 来源:发表于2017-12-03 17:19 被阅读0次

    刷LeetCode 53题的时候,想不出来O(n)复杂度的解,上网去搜,发现了这个算法,专门来求最大子序列的和,算法就是考虑,数组中的A[I]前面的的序列段的和为sum,如果sum大于等于零,那么加上A[i],如果sum小于零,就没有必要加了,不如直接保留A[i],这样就相当于从A[i]开始的一个新的数字段。保留一个max保存最大的值,每次都和max比较。

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

    相关文章

      网友评论

          本文标题:LeetCode 53 Kadane's algorithm

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