zoukankan      html  css  js  c++  java
  • leetcode -- Maximum Subarray

    Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

    For example, given the array [−2,1,−3,4,−1,2,1,−5,4],
    the contiguous subarray [4,−1,2,1] has the largest sum = 6.

    分析

    ai ai+1 ... aj ... ak2 ak1 ak

    如果{ai, ai+1, …, aj, …ak}是满足要求的最大和子序列maxStr。那么如果maxStr的任一ai开头的子序列{ai …, aj}的和sum{ai …, aj} < 0,则maxStr的还有一子序列sum{aj+1 …, ak} > sum{maxStr}。这与maxStr是最大和子序列矛盾。
    因此, maxStr中任一ai开头的子序列sum{ai …, aj} 0.

    class Solution {
    public:
        int maxSubArray(int A[], int n) {
            int max = A[0], sum = 0;
            for(int i = 0; i < n; i++){
              sum += A[i];
              if(max < sum)
                max = sum;
              if(sum < 0)
                sum = 0;
            }
            return max;
        }
    };

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    头插法建立单链表
    顺序表
    栈的顺序存储实现
    折半查找
    myeclipe 快捷键盘
    ztree redio单选按钮
    webuploader上传进度条 上传删除
    svn乱码解决办法
    异构SOA系统架构之Asp.net实现(兼容dubbo)
    RPC框架
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4670231.html
Copyright © 2011-2022 走看看