[leetcode] Maximum Subarray

来源:互联网 发布:网络主播灯光摆放图解 编辑:程序博客网 时间:2024/05/17 10:57

Maximum Subarray

 开始写了个O(n^2)的算法,超时了 

    int maxSubArray(int A[], int n) {        int maxSum=0;        for (int i=0; i<n; i++) {            int sum=0;            for (int j=i; j<n; j++) {                sum+=j;                if (sum>maxSum) {                    maxSum=sum;                }            }        }        return maxSum;    }

后发现,可以进行进一步的优化

class Solution {public:    int maxSubArray(int A[], int n) {        int max=A[0];        int sum=A[0];                for(int i=1;i<n;i++){//一次扫描法,从左向右扫描            if(sum<=0){//如果当前的子序列的和<0了,那么当前的子序列肯定不是最大子序列中的一部分,则从当前元素重新扫描。                sum=A[i];            }else{//继续累加                sum+=A[i];            }            if(sum>max){//max保存当前出现过的子序列的最大值,如果>max,则替换max的值                max=sum;            }        }        return max;    }};



0 0