lintcode:Continuous Subarray Sum

Given an integer array, find a continuous subarray where the sum of numbers is the biggest. Your code should return the index of the first number and the index of the last number. (If their are duplicate answer, return anyone)

Have you met this question in a real interview?  
Yes
Example

Give [-3, 1, 3, -3, 4], return [1,4].

Tags   Expand  

Related Problems Expand 


class Solution {
public:
    /**
     * @param A an integer array
     * @return  A list of integers includes the index of 
     *          the first number and the index of the last number
     */
    vector continuousSubarraySum(vector& A) {
        // Write your code here
        vector res;
        
        if (A.size() == 0)
            return res;
        
        int curLeft  = 0;
        
        int maxLeft  = curLeft;
        int maxRight = 0;
        
        int curSum = 0;
        int maxSum = INT_MIN;
        
        for (int i=0; i maxSum)
            {
                maxLeft  = curLeft;
                maxRight = i;
                maxSum = curSum;
            }
            
            if (curSum < 0)
            {
                if (i+1 <= A.size()-1)
                {
                    curSum = 0;
                    curLeft  = i+1;
                }
            }
        }

        res.push_back(maxLeft);
        res.push_back(maxRight);
        
        return res;
    }
};


你可能感兴趣的:(C++/C,lintcode,算法)