lintcode- 乘积最大子序列

找出一个序列中乘积最大的连续子序列(至少包含一个数)。

您在真实的面试中是否遇到过这个题?

样例 比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6

    class Solution {  
    public:  
        
        int maxProduct(vector<int>& nums) {  
            
            int posMax = nums[0];  
            int negMax = nums[0];  
            int ret = nums[0];  
            for(int i=1;i<nums.size();i++)  
            {  
                int tempPosMax = posMax;  
                int tempNegMax = negMax;  
                posMax = max(nums[i],max(nums[i]*tempPosMax,nums[i]*tempNegMax));  
                negMax = min(nums[i],min(nums[i]*tempPosMax,nums[i]*tempNegMax));  
                ret = max(ret,posMax);  
            }  
            return ret;  
        }  
    };  


你可能感兴趣的:(lintcode- 乘积最大子序列)