加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

leetcode No152. Maximum Product Subarray

发布时间:2020-12-13 21:19:50 所属栏目:PHP教程 来源:网络整理
导读:Question Find the contiguous subarray within an array (containing at least one number) which has the largest product. For example,given the array [2,3,⑵,4], the contiguous subarray [2,3] has the largest product = 6. 求最大连续子数组乘积 A

Question

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

For example,given the array [2,3,⑵,4],
the contiguous subarray [2,3] has the largest product = 6.
求最大连续子数组乘积

Algorithm

与最大连续子数组和类似,乘积有1点变化要斟酌到1种特殊情况:
负数和负数相乘:如果前面得到1个较小的负数,和后面1个较大的负数相乘,得到的反而是1个较大的数。
所以,我们在处理乘法的时候,除需要保护1个局部最大值,同时还要保护1个局部最小值

Accepted Code

class Solution {
public:
    int maxProduct(vector<int>& nums) {
        if(nums.size()==1)
            return nums[0];
        int subMax=nums[0],subMin=nums[0];
        int res=nums[0];
        for(int i=1;i<nums.size();i++)
        {
            int temp=subMax;
            subMax=max(max(subMax*nums[i],subMin*nums[i]),nums[i]);
            subMin=min(min(temp*nums[i],nums[i]);
            res=max(res,subMax);
        }
        return res;
    }
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读