力扣题解(乘积最大子数组)

152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续

子数组

(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

本题思路是分两个数组分别保存前i个为正的最大值和前i个为负的最大值,然后对第i个为正,负分情况讨论。当第i个为正时,则pos[i]=pos[i-1]*num[i],negpos[i-1]=negpos[i]*num[i].当第i个为负时,则pos[i]=negpos[i-1]*num[i],negpos[i-1]=pos[i]*num[i].为0则全化为0即可。这类题的特点是存在频繁的正负号的转换,因此需要分别对正,负数保存。

ps:本题最后一个案例过不了,官方做法也是最后一个案例过不了,貌似是乘积过大导致。

class Solution {
public:
    int maxProduct(vector<int>& nums) {
    size_t n=nums.size();
    vector<int>maxx(n,INT_MIN);//包含i的最大值
    vector<int>minx(n,INT_MAX);

    maxx[0]=minx[0]=nums[0];
    for(int i=1;i<n;i++)
    {
        int cur=nums[i];
        if(cur>=0)
        {
            maxx[i]=max(nums[i],maxx[i-1]*cur);
            minx[i]=min(nums[i],minx[i-1]*cur);
        }
        else
        {
            maxx[i]=max(nums[i],minx[i-1]*cur);
            minx[i]=min(nums[i],maxx[i-1]*cur);
        }
    }
    int ret=nums[0];
    for(int i=1;i<n;i++)
    {
       if(maxx[i]>ret)
       {
        ret=maxx[i];
       }

    }
    return ret;

    }
};

相关推荐

  1. 题解乘积数组)

    2024-07-12 01:48:03       24 阅读
  2. _动态规划2—乘积数组

    2024-07-12 01:48:03       43 阅读
  3. [题解]53. 数组和

    2024-07-12 01:48:03       31 阅读
  4. LeetCode-152. 乘积数组

    2024-07-12 01:48:03       70 阅读
  5. leetcode 152.乘积数组

    2024-07-12 01:48:03       43 阅读
  6. leetcode152 乘积数组

    2024-07-12 01:48:03       37 阅读
  7. leetcode152. 乘积数组

    2024-07-12 01:48:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 01:48:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 01:48:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 01:48:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 01:48:03       69 阅读

热门阅读

  1. synchronized (userAccount.intern())知识点

    2024-07-12 01:48:03       23 阅读
  2. 网络协议与标准

    2024-07-12 01:48:03       24 阅读
  3. Haproxy搭建Web群集

    2024-07-12 01:48:03       23 阅读
  4. 24.6.30

    24.6.30

    2024-07-12 01:48:03      18 阅读
  5. 裸金属服务器适用于哪些场景?

    2024-07-12 01:48:03       19 阅读
  6. 如何理解李彦宏说的“不要卷模型,要卷应用”

    2024-07-12 01:48:03       22 阅读
  7. 【算法】字符串的排列

    2024-07-12 01:48:03       22 阅读
  8. 大模型学习笔记0-前言

    2024-07-12 01:48:03       22 阅读
  9. 【C++编程】程序流程结构

    2024-07-12 01:48:03       19 阅读
  10. 力扣215 数组中第k大的数

    2024-07-12 01:48:03       25 阅读