LEETCODE: Maximum Subarray

来源:互联网 发布:免费发广告软件 编辑:程序博客网 时间:2024/06/06 19:22

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.

思路: 从第一个数出发,遇到正数,如果前面数列的和为正,相加得新的结果,如果是负数,若当前这个数大于最大值,设为新的最大值;负数,则如果当前最大值小于这个负数,用当前负数替换。


class Solution {public:    int maxSubArray(int A[], int n) {        if(n == 0) return 0;        if(n == 1) return A[0];        int max = A[0];        int currentsum = A[0];        for(int ii = 1; ii < n; ii ++) {            if(currentsum + A[ii] > 0) {                if(currentsum < 0)                    currentsum = 0;                currentsum += A[ii];                if(currentsum > max) {                    max = currentsum;                }            }            else            {                if(currentsum > A[ii]) {                    if(currentsum > max) {                        max = currentsum;                    }                }                else {                    if(A[ii] > max) {                        max = A[ii];                    }                }                currentsum = A[ii];            }        }                return max;    }};





0 0
原创粉丝点击