美文网首页
WEEK#17 Divide and Conquer_Maxim

WEEK#17 Divide and Conquer_Maxim

作者: DarkKnightRedoc | 来源:发表于2017-09-11 12:46 被阅读0次

    Description of the Problem

    Find the contiguous sub-array 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.


    Solution1 (Brute Force)

    class Solution {
    public:
        int maxSubArray(vector<int>& nums) {
            int MaxInWhole = nums.at(0); // the max value in all the arries;
            for (int i = 0; i < nums.size(); i++) {
                int MaxInPart = nums.at(i); // the max value in arries begin from index i;
                                                        // for each i, set MaxInPart as nums[i];
                int Sum = nums.at(i); // the sum added together begin from index i;
                                                // for each i, set Sum as nums[i];
                for (int j = i + 1; j < nums.size(); j++) {
    
                    Sum += nums.at(j); // accumulate Sum.
                    if (Sum > MaxInPart)
                        MaxInPart = Sum; // replace MaxInPart if Sum is larger.
                }
                if (MaxInPart > MaxInWhole)
                    MaxInWhole = MaxInPart; // replace MaxInWhole if MaxInPart is larger.
            }
            return MaxInWhole;
        }
    };
    

    Time Limit Exceeded!
    Leading to using divide and conquer.


    Solution2(Divide and Conquer)

    can't figure out myself, copied and learnt from https://leetcode.com/problems/maximum-subarray/discuss/

    Largest_Sum(nums, i) = Largest_Sum(nums, i-1) > 0 ? Largest_Sum(nums, i-1) : 0 + nums[i];
    
    if (Largest_Sum(nums, i - 1) > 0)
      Largest_Sum(nums, i) = nums[i] + Largest_Sum(nums, i - 1);
    else 
      Largest_Sum(nums, i) = nums[i];
    

    相关文章

      网友评论

          本文标题:WEEK#17 Divide and Conquer_Maxim

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