首页 » 编程之美 » 正文

[leetcode_53]Maximum Subarray

这个题怎么说?求数组最大的子序列和。
非一次AC,代码功力太需要提高了。注意边界。感觉这代码写得太差。
附上代码:

class Solution {
public:
    int maxSubArray(int A[], int n) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        int sum = 0;
        if(n == 1)
        {
            return A[0];
        }
        int * value = new int[n];
        if(A[0] <= 0)
            value[0] = 0;
        else
        {
            value[0] = A[0];
            if(value[0] > sum)
                sum = value[0];
        }
        for(int i = 1;i < n;i++)
        {
            if(A[i] + value[i-1] > 0)
            {
                value[i] = A[i] + value[i-1];
                if(value[i] > sum)
                    sum = value[i];
            }
            else
            {
                value[i] = 0;
            }
        }
        if(sum == 0)
        {
            sum = -999999999;
            for(int i = 0;i < n;i++)
            {
                if(A[i] > sum)
                    sum = A[i];
            }
        }
        return sum;
    }
};

发表评论