首页 > 代码库 > Leetcode Maximum Subarray

Leetcode Maximum Subarray

code:

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

分析:

当加入一个元素后的累积和,可能为正数(有利)也可能为负数(有损)。若为正数,则新sum为当前元素加上以前的和,如果为负数,则从新的元素开始。用f=max(f+A[i], A[i])实现。

仅上面的方法不能获得最大和,可用一个变量来维持这个最大和。用result=max(f, result)实现。

Leetcode Maximum Subarray