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.
    

      DP : B[i]为以A[i]节点作为截止节点的subarray的the largest sum,那么B[i] = max (A[i], B[i-1] + A[i]) ;

    class Solution {
    public:
        int maxSubArray(int A[], int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            vector<int> B(n,0);
            B[0] = A[0];
            int max = B[0];
            for(int i = 1; i< n; i++)
             {
                  B[i] = B[i-1] + A[i] > A[i] ? B[i-1] + A[i] : A[i] ;
                 max = max > B[i] ? max : B[i] ;
             }
             
             return max ;
        }
    };

     重写后:

    class Solution {
    public:
        int maxSubArray(int A[], int n) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int max = A[0];
            int test = A[0];
            for(int i = 1; i< n; ++i)
            {
                test = test + A[i] > A[i] ? test + A[i] : A[i];
                max = max > test ? max : test;
            }
            return max;
        }
    };
    
    
    --------------------------------------------------------------------天道酬勤!
  • 相关阅读:
    JSONObject登录接口
    HttpClient跨域请求post
    线段树个人理解及模板
    Python基本语法(一)
    Boyer-Moore算法
    Sunday算法浅谈
    Kmp算法浅谈
    bm坏字符 , Horspool算法 以及Sunday算法的不同
    字典树的建立和基本查找
    CF Round551 Div2 题解
  • 原文地址:https://www.cnblogs.com/graph/p/3095831.html
Copyright © 2011-2022 走看看