Maximum Product Subarray

原题链接Maximum Product Subarray

在给定数组中找到一个子数组,使得这个子数组元素的乘积最大。给定数组中可能有正数,负数和0

思路:

遍历数组,计算以nums[i]结尾的子数组的最大乘积和最小乘积。进而可以求解以nums[i+1]结尾的子数组的最大乘积和最小乘积。倘若最后的子数组以nums[j]结尾,那么在求解以nums[j]结尾的子数组的最大乘积时就已经得出结果

代码如下

class Solution {
public:int maxProduct(vector<int>& nums) {if(nums.empty())    return 0;int result = nums[0];for(int i = 1, rmax = result, rmin = result; i != nums.size(); ++i){/* 如果当前值为负,那么最小值将变为最大值,最大值将变为最小值 */if(nums[i] < 0)std::swap(rmax, rmin);rmax = std::max(nums[i], nums[i] * rmax);rmin = std::min(nums[i], nums[i] * rmin);result = std::max(result, rmax);}return result;}
};

每天一道LeetCode-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大相关推荐

  1. 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) 的算法. 使用暴力算法 解决思想: ...

  2. 漫画:如何在数组中找到和为 “特定值” 的三个数?

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 前一段时间,我们介绍了LeetCode上面的一个经典算法题[两数之和问题]. 这一次,我们把问题做一下扩展,尝试在数 ...

  3. js数组查找最接近_在JavaScript数组中找到最小元素的位置

    在JavaScript数组中找到最小元素的位置 注*  之前有篇文章介绍过数据遍历的性能比较: for in 比for loop慢至少20倍 ,这是另外一篇比较数组查找性能的例子,通过对手工/inde ...

  4. java数组中最小的k个元素_java – 在数组中找到k个最小整数

    这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题, ...

  5. python求无序列表中位数_python 实现在无序数组中找到中位数方法

    一.问题描述 1.求一个无序数组的中位数, (若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置.要求:不能使用排序,时间复杂度尽量低 2.例如:lists = [ ...

  6. 在数组中找到第 k 小的数

    在数组中找到第 k 小的数 [要求] 如果 arr 长度为 N,要求时间复杂度为 O(N),额外空间复杂度为 O(1). public static int[] getMinKNumByHeap(in ...

  7. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...

    题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...

  8. C语言数组中找到第一个重复元素的算法(附完整源码)

    C语言数组中找到第一个重复元素的算法 C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) #in ...

  9. C语言在数组中找到最大的元素(附完整源码)

    C语言在数组中找到最大的元素 C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) #include <io ...

最新文章

  1. 2017年2月24日星期五
  2. 一文带你了解Spring核心接口Ordered的实现及应用
  3. SpringBoot JPA不调用save方法,调用set方法就自动修改了数据库值
  4. python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解
  5. redis学习笔记-安装与入门
  6. kafka通过脚本一次启动集群
  7. 计算机网络之物理层:5、数据的交换方式(电路交换、报文交换、分组交换)
  8. 分布式事务seata只支持MySQL_阿里分布式事务框架Seata原理解析
  9. 远程配置jupyter notebook
  10. 质疑“扩版=质量下降”——以《中国农学通报》和《安徽农业科学》为例
  11. 灵感专题—2019年优秀网页设计作品赏析#5月
  12. 小米8 Goole Play 商店登录问题 | 正确爬山方式
  13. SSL安全证书:免费的SSL证书申请渠道有哪些?
  14. 基于射频技术的门禁管理系统
  15. 隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(五)
  16. dalao的tajan模板
  17. 地平线旭日X3派试用 | ssh密钥登陆 蓝牙手柄连入ros
  18. 计算机网络中的层次结构
  19. 输出所有的水仙花数(java语言编写)
  20. c++:一维黎曼问题多种格式求解

热门文章

  1. idea装python插件_学习idea2020手动安装python插件的实现方法
  2. 如何在服务器上运行python程序_在服务器上配置运行(每天一则段子python程序)...
  3. Java Decimal范围_Java BigDecimal初探
  4. 【选型】消息中间件选型
  5. 20155210 Exp5 MSF基础应用
  6. Linux环境下安装jenkins
  7. MySQL Infobright 数据仓库快速安装笔记[转]
  8. 使用shell脚本对Linux系统和进程资源进行监控
  9. 基于C#在WinCE6.0系统SQLCE3.5的安装开发使用
  10. typedef 与 define