美文网首页
(*)剑指offer 面试题31:连续子数组的最大和

(*)剑指offer 面试题31:连续子数组的最大和

作者: qmss | 来源:发表于2016-06-26 23:09 被阅读0次

题目:
输入一个整形数组,数组里有正数也有负数,数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度O(n)

解法:
动态规划问题

int greatestSubArraySum(int *arr, int len) {
    if (arr == 0 || len <= 0)  return -1;
    int currSum = 0;
    int greatestSum = 0x80000000;
    for (int i = 0; i < len; ++i)  {
        if (currSum <= 0) {
            currSum = arr[i];
        } else {
            currSum += arr[i];
        }
        if (currSum > greatestSum) {
            greatestSum = currSum;
        }
    }
    return greatestSum;
}

相关文章

网友评论

      本文标题:(*)剑指offer 面试题31:连续子数组的最大和

      本文链接:https://www.haomeiwen.com/subject/yhlzdttx.html