Leetcode最大子序和
Posted gdut-gordon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode最大子序和相关的知识,希望对你有一定的参考价值。
思路:
分治法。记最大子序和为maxResult,函数为int getMaxSub( *, * ) 。
向量A= [a1, a2, a3, ...., ai, ai+1, a+2, ......, aj-1, aj],
maxResult = max( maxresult(a1, ......, ai), getMaxSub(*, i+1) ),其中sum(a1, ......, ai) <= 0.
class Solution public: int maxSubArray(vector<int>& nums) if(nums.size() == 0) return -1; return getMaxSub(nums, 0); int getMaxSub(const vector<int>& vecInt, int index) int maxR = vecInt[index], sum = 0; for(index; index < vecInt.size(); ++index) sum = sum + vecInt[index]; if(sum <= 0 && index < (vecInt.size() - 1)) // 确保下一级序列非空 maxR = max(maxR, getMaxSub(vecInt, index+1)); return maxR; else maxR = max(maxR, sum); return maxR; ;
执行用时 :12 ms, 在所有 C++ 提交中击败了64.15%的用户
内存消耗 :9.4 MB, 在所有 C++ 提交中击败了76.19%的用户
以上是关于Leetcode最大子序和的主要内容,如果未能解决你的问题,请参考以下文章