Find the contiguous subarray within an array (containing at least one number) which has the largest product.

Have you met this question in a real interview?

Yes

Example

For example, given the array[2,3,-2,4], the contiguous subarray[2,3]has the largest product =6.

line 20, lmax is updated in line 19, be careful

class Solution {

public:

/\*\*

 \* @param nums: a vector of integers

 \* @return: an integer

 \*/

int maxProduct\(vector<int>& nums\) {

    // write your code here

    if \(nums.empty\(\)\) {

        return -1;

    }

    int res = nums\[0\], lmin = nums\[0\], lmax = nums\[0\];

    for \(int i = 1; i < nums.size\(\); ++i\) {

        if \(nums\[i\] >= 0\) {

            lmax = max\(nums\[i\], nums\[i\] \* lmax\);

            lmin = min\(nums\[i\], nums\[i\] \* lmin\);

        } else {

            int temp = lmax;

            lmax = max\(nums\[i\], nums\[i\] \* lmin\);

            lmin = min\(nums\[i\], nums\[i\] \* temp\);

        }

        // cout << lmax << endl;

        res = max\(res, lmax\);

    }

    return res;

}

};

results matching ""

    No results matching ""