lintcode: Maximum Product Subarray

来源:互联网 发布:godaddy设置php 编辑:程序博客网 时间:2024/06/06 17:07

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

跟lintcode: Maximum Subarray 类似。

但乘法和加法不同,乘法不是线性递增的,可能有一个数是负数很小,乘以一个整数后就变得很大了。

做法是在维持一个局部最大数组的同时,维持一个局部最小的数组。
参考:http://blog.csdn.net/linhuanmars/article/details/39537283

class Solution {public:    /**     * @param nums: a vector of integers     * @return: an integer     */    int maxProduct(vector<int>& nums) {        // write your code here        int localMax=nums[0];        int localMin=nums[0];        int globalMax=nums[0];        for(int i=1;i<nums.size();i++){            int tmp=localMax;            localMax=max(max(localMax*nums[i],nums[i]),localMin*nums[i]);            localMin=min(min(localMin*nums[i],nums[i]),tmp*nums[i]);            if(localMax>globalMax){                globalMax=localMax;            }        }        return globalMax;    }};
0 0