每天一道LeetCode-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大
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-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大相关推荐
- 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 请必须使用时间复杂度为 O(log n) 的算法. 使用暴力算法 解决思想: ...
- 漫画:如何在数组中找到和为 “特定值” 的三个数?
作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 前一段时间,我们介绍了LeetCode上面的一个经典算法题[两数之和问题]. 这一次,我们把问题做一下扩展,尝试在数 ...
- js数组查找最接近_在JavaScript数组中找到最小元素的位置
在JavaScript数组中找到最小元素的位置 注* 之前有篇文章介绍过数据遍历的性能比较: for in 比for loop慢至少20倍 ,这是另外一篇比较数组查找性能的例子,通过对手工/inde ...
- java数组中最小的k个元素_java – 在数组中找到k个最小整数
这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题, ...
- python求无序列表中位数_python 实现在无序数组中找到中位数方法
一.问题描述 1.求一个无序数组的中位数, (若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置.要求:不能使用排序,时间复杂度尽量低 2.例如:lists = [ ...
- 在数组中找到第 k 小的数
在数组中找到第 k 小的数 [要求] 如果 arr 长度为 N,要求时间复杂度为 O(N),额外空间复杂度为 O(1). public static int[] getMinKNumByHeap(in ...
- 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...
题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...
- C语言数组中找到第一个重复元素的算法(附完整源码)
C语言数组中找到第一个重复元素的算法 C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) #in ...
- C语言在数组中找到最大的元素(附完整源码)
C语言在数组中找到最大的元素 C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) #include <io ...
最新文章
- 2017年2月24日星期五
- 一文带你了解Spring核心接口Ordered的实现及应用
- SpringBoot JPA不调用save方法,调用set方法就自动修改了数据库值
- python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解
- redis学习笔记-安装与入门
- kafka通过脚本一次启动集群
- 计算机网络之物理层:5、数据的交换方式(电路交换、报文交换、分组交换)
- 分布式事务seata只支持MySQL_阿里分布式事务框架Seata原理解析
- 远程配置jupyter notebook
- 质疑“扩版=质量下降”——以《中国农学通报》和《安徽农业科学》为例
- 灵感专题—2019年优秀网页设计作品赏析#5月
- 小米8 Goole Play 商店登录问题 | 正确爬山方式
- SSL安全证书:免费的SSL证书申请渠道有哪些?
- 基于射频技术的门禁管理系统
- 隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(五)
- dalao的tajan模板
- 地平线旭日X3派试用 | ssh密钥登陆 蓝牙手柄连入ros
- 计算机网络中的层次结构
- 输出所有的水仙花数(java语言编写)
- c++:一维黎曼问题多种格式求解
热门文章
- idea装python插件_学习idea2020手动安装python插件的实现方法
- 如何在服务器上运行python程序_在服务器上配置运行(每天一则段子python程序)...
- Java Decimal范围_Java BigDecimal初探
- 【选型】消息中间件选型
- 20155210 Exp5 MSF基础应用
- Linux环境下安装jenkins
- MySQL Infobright 数据仓库快速安装笔记[转]
- 使用shell脚本对Linux系统和进程资源进行监控
- 基于C#在WinCE6.0系统SQLCE3.5的安装开发使用
- typedef 与 define