【LeetCode】152. Maximum Product Subarray

题目:  

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.

题解:

  先暴力解,遍历所有组合,更新最大值。很显然得超时。

Solution 1 (TLE)

class Solution {
public:int maxProduct(vector<int>& nums) {int n = nums.size(), mproduct = nums[0];for (int i = 0; i < n; ++i) {int tmp = nums[i];mproduct = max(mproduct, tmp);for (int j = i + 1; j < n; ++j) {tmp = tmp * nums[j];mproduct = max(mproduct, tmp);}}return mproduct;}
};

  Besides keeping track of the largest product, we also need to keep track of the smallest product. Why? The smallest product, which is the largest in the negative sense could become the maximum when being multiplied by a negative number. (from here)

  Let us denote that:

f(k) = Largest product subarray, from index 0 up to k.

   Similarly,

g(k) = Smallest product subarray, from index 0 up to k.

   Then,

f(k) = max( f(k-1) * A[k], A[k], g(k-1) * A[k] )
g(k) = min( g(k-1) * A[k], A[k], f(k-1) * A[k] )

Solution 2 ()

class Solution {
public:int maxProduct(vector<int>& nums) {int maxPro = nums[0], minPro = nums[0], result = nums[0], n = nums.size();for (int i=1; i<n; i++) {int mx = maxPro, mn = minPro;maxPro = max(max(nums[i], mx * nums[i]), mn * nums[i]);minPro = min(min(nums[i], mx * nums[i]), mn * nums[i]);result = max(maxPro, result);}return result;}
};
  1. Fist we assume there is no zero in the A[]. The answer must be A[0] A[1] .... A[i] OR A[j] *A[j+1] A[n - 1]. (Try to prove yourself)

  2. Then when we have zero in the A[] (assum A[k] == 0). We could see A[0],A[1]...A[k - 1 ] As An Array and A[k + 1] A[k + 2]...A[n-1] is another.(from here)

  The key point of this problem is: there are only two patterns:
One is "aBcD", and the other is "aBcDe", where I use lowercase to denote a negative number, and use upper case to denote a positive number.
For the first pattern, the maximum product would be "aBcD"; and for the second pattern, the maximum product would be "max (aBcD, BcDe)". So above solution code is very elegant and efficient. 

Solution 3 ()

class Solution {// author : s2003zy// weibo : http://weibo.com/574433433// blog : http://s2003zy.com// Time : O(n)// Space : O(1)public:int maxProduct(vector<int>& nums) {int ans = INT_MIN, frontProduct = 1, backProduct = 1;int n = nums.size();for(int i = 0; i < n; ++i) {frontProduct *= nums[i];backProduct *= nums[n - i - 1];ans = max(ans,max(frontProduct,backProduct));frontProduct = frontProduct == 0 ? 1 : frontProduct;backProduct = backProduct == 0 ? 1 : backProduct;}return ans;}
};

 

转载于:https://www.cnblogs.com/Atanisi/p/6729865.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“哥德尔不完备定理”到底说了些什么?

来源&#xff1a; 赵昊彤科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-409681-1067019.html 【编者按&#xff1a;不知为何&#xff1f;一直不相信已有的数理、物理、生理、心理、管理……能够研究好人机融合智能系统。究其因&#xff0c;需要出现新的数/物…

ghost镜像浏览器_新电脑,GHOST装不进系统?不要急,跟我来

前几天&#xff0c;朋友转了台新电脑&#xff0c;用的是第十代CPU I3 10100&#xff0c;什么都安装好了&#xff0c;也按要求做了GPT分区&#xff0c;用GHOST安装了WIN10系统&#xff0c;可是重启时就是进不去&#xff0c;在BOOT选项里根本看不到硬盘。这是为什么呢&#xff1f…

如何卸载mysql server 2005_如何卸载SQL Server 2005

卸载SQL Server 2005的方法之一&#xff0c;放在这儿只是为了记住&#xff1a;1&#xff1a;把SQL Server2005的安装盘(安装文件)放入到光驱。2&#xff1a;打开如下路径&#xff1a;开始/运行&#xff0c;输入&#xff1a;cmd3&#xff1a;输入下列命令&#xff1a;Start /wai…

python异步消费kafka_Kafka 通过python简单的生产消费实现

使用CentOS6.5、python3.6、kafkaScala 2.10 - kafka_2.10-0.8.2.2.tgz (asc, md5) 一、下载kafka 下载地址 https://kafka.apache.org/downloads 里面包含zookeeper二、安装Kafka 1、安装zookeeper mkdir /root/kafka/ tar -vzxf kafka_2.10-0.8.2.2cd /root/kafka/kafka_2.10…

【技术趋势】2020 五大技术趋势:无人驾驶发展、机器视觉崛起、区块链实用化、人类增强技术、超自动化...

图源&#xff1a;https://unsplash.com/来源&#xff1a;AI开发者原标题&#xff1a;Here Is A Rundown of 5 Major Tech Trends Hitting 2020作者&#xff1a;| Richard Liu链接&#xff1a;https://medium.com/swlh/here-is-a-rundown-of-5-major-tech-trends-hitting-2020-6…

正则不能输入特殊字符_正则表达式语法学习和在线练习

标题: 正则表达式语法学习和在线练习作者: 梦幻之心星 sky-seekerqq.com标签: [#正则表达式,#语法,#学习,#练习]目录: [语法]日期: 2021-01-26背景说明正则表达式使搜索和替换操作更加灵活高效。许多程序设计语言都支持使用正则表达式进行字符串操作。正则表达式是由普通字符…

JavaScript Math 对象

// 返回算术常量 e&#xff0c;即自然对数的底数&#xff08;约等于2.718&#xff09;。 Math.E; // 2.718281828459045 // 返回圆周率&#xff08;约等于3.14159&#xff09;。 Math.PI; // 3.141592653589793 // 返回最低值。 Math.min(1, 2, 3, 4, 5, 6); // 1 // 返回最高值…

非接触物体尺寸形态测量_检修人必备的测量常识

小编今天给大家分享一下测量的常识&#xff0c;咱们搞机械的一定要懂点测量知识&#xff01;一、测量器具的分类测量器具是一种具有固定形态、用以复现或提供一个或多个已知量值的器具。按用途的不同量具可分为以下几类&#xff1a;1. 单值量具只能体现一个单一量值的量具。可用…

生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段

来源&#xff1a;美国空军国家安全研究学会研究报告2005年9月【知远导读】本篇推送编辑节选自美国空军国家安全研究学会2005年9月发布的一份题为《生物战教训、生物安全问题以及未来监控军民两用生物技术扩散的手段》的研究报告。该报告直接来源于作者海伦普凯特&#xff08;He…

python关系运算符和逻辑运算符的优先级_python中逻辑运算符的优先级问题

遇到的问题今天做题的时候&#xff0c;碰到一个关于逻辑运算符优先级的问题&#xff0c;看到之后我懵了0 and 12 and 30 or 12 or 3上面的返回值是什么&#xff1f;我一开始以为返回的都是左边的值&#xff0c;但是结果和我想的不同&#xff0c;结果如下&#xff1a;In [4]: 0 …

编程面试题之——简答题(持续更新...)

简答题&#xff1a; 1、try{}里有一个return语句&#xff0c;那么紧跟在这个try后的finally{}里的代码会不会被执行&#xff0c;什么时候被执行&#xff0c;在return前还是后? 答&#xff1a;会执行&#xff0c;在方法返回调用者前执行。注意&#xff1a;在finally中改变返回值…

如何避免字符串混淆加密_iOS-代码混淆加固方案

对于iOS来说&#xff0c;由于系统是封闭的&#xff0c;APP上架需要通过App Store&#xff0c;安全性来说相当高。但是对于大厂和知名APP而言&#xff0c;别人给的安全保障永远没有自己做的来得踏实。所以对于大厂、少部分企业级和金融支付类应用来说加固是相当重要的。下面是目…

DARPA计划在2021年开展多种新型武器概念研究

来源&#xff1a;中国指挥与控制学会“远射”项目DARPA计划于2021年投资2200万美元启动“远射”项目&#xff0c;演示一种空射武器系统。该系统由速度较慢的远程飞行器搭载至战区&#xff0c;在战区上空发射多枚空空导弹来实施作战。该武器可由现有战斗机外部挂载&#xff0c;或…

python算法实现源码_Python实现七个基本算法

1.顺序查找当数据存储在诸如列表的集合中时&#xff0c;我们说这些数据具有线性或顺序关系。 每个数据元素都存储在相对于其他数据元素的位置。 由于这些索引值是有序的&#xff0c;我们可以按顺序访问它们。 这个过程产实现的搜索即为顺序查找。顺序查找原理剖析&#xff1a;从…

多重边框

div {box-shadow: 0 0 0 6px rgba(0, 0, 0, 0.2), 0 0 0 12px rgba(0, 0, 0, 0.2), 0 0 0 18px rgba(0, 0, 0, 0.2), 0 0 0 24px rgba(0, 0, 0, 0.2); height: 200px; margin: 50px auto; width: 400px } 转载于:https://www.cnblogs.com/yk-ontheway/p/6737698.html

python词云设计实例_python词云库wordcloud的使用方法与实例详解

wordcloud是优秀的词云展示第三方库一、基本使用 import jieba import wordcloud txt open("1.txt", "r", encodingutf-8).read() words jieba.lcut(txt) txt_1 " ".join(words) # print(txt1) w wordcloud.WordCloud(font_path"msyh.t…

细胞因子风暴与新冠肺炎

来源&#xff1a;陈辉科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-3426569-1219679.html 2020年2月15日下午&#xff0c;在国务院联发联控机制新闻发布会上&#xff0c;周琪院士介绍说“炎症因子风暴”[作者注释&#xff1a;即是细胞因子风暴&#xff08;Cy…

mysql 启动 修改密码_基础的启动/停止/重启/密码修改MySQL

如何启动/停止/重启MySQL一、启动方式1、使用 service 启动&#xff1a;service mysqld start2、使用 mysqld脚本启动&#xff1a;/etc/inint.d/mysqld start3、使用 safe_mysqld启动&#xff1a;safe_mysqld&二、停止1、使用 service 启动&#xff1a;service mysqldstop2…

预编译对象解决SQL注入问题

转载于:https://www.cnblogs.com/suanshun/p/6739454.html

eclipse中添加jar包后运行时提示noclassdeffounderror_一看你就懂,超详细 java 中的 ClassLoader 详解,耐心看~...

备注&#xff1a;本文篇幅比较长&#xff0c;但内容简单&#xff0c;大家不要恐慌&#xff0c;安静地耐心翻阅就是Class文件的认识我们都知道在Java中程序是运行在虚拟机中&#xff0c;我们平常用文本编辑器或者是IDE编写的程序都是.java格式的文件&#xff0c;这是最基础的源码…