博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Maximum Product Subarray
阅读量:6292 次
发布时间:2019-06-22

本文共 1626 字,大约阅读时间需要 5 分钟。

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

For example, given the array [2,3,-2,4],

the contiguous subarray [2,3] has the largest product = 6.

  • 常规思路
class Solution {public:    int maxProduct(int A[], int n) {        int product = INT_MIN;        for (int i = 0; i < n; i++)        {            int sub = 1;            for (int j = i; j < n; j++)            {                sub *= A[j];                if (sub > product)                {
product = sub; } } } return product; }};

上述算法时间复杂度过高,LeetCode返回Time Limit Exceeded错误提示。

  • 动态规划思路
    由于数组中有负数存在,一个负数乘以一个负数可能得到一个极大的正数,因此需要维护两个局部变量max_localmin_local。转移方程式如下:
    temp = max_local;
    max_local[i] = max(max(max_local * A[i], min_local * A[i]), A[i]);
    min_local[i] = min(min(temp * A[i], min_local * A[i]), A[i]);
  • 实现代码
/*************************************************************    *  @Author   : 楚兴    *  @Date     : 2015/2/8 21:43    *  @Status   : Accepted    *  @Runtime  : 13 ms*************************************************************/class Solution {public:    int maxProduct(int A[], int n) {        if (n == 0)        {            return 0;        }        int max_local = A[0];        int min_local = A[0];        int global = A[0];        for (int i = 1; i < n; i++)        {            int temp = max_local;            max_local = max(max(max_local * A[i], min_local * A[i]), A[i]);            min_local = min(min(temp * A[i], min_local * A[i]), A[i]);            global = max(global, max_local);        }        return global;    }};

转载地址:http://gxjta.baihongyu.com/

你可能感兴趣的文章
轻松学PHP
查看>>
Linux中的网络监控命令
查看>>
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>