编程之美----子数组的最大乘积
问题:给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组,并写出算法的时间复杂度。
解法一:用一个数组保存从左边到右边前i个元素的乘积。用另一个数组保存从右边到左边N-i个元素的乘积。然后结果就为两个数组中元素对应的乘积,复杂度为o(N)。
解法二:设N个数的乘积为P,对P进行分析。
1,P为0,则数组中至少包含一个0,假设除去一个0后,其它N-1个数的乘积为Q,若Q为0,则数组中至少有两个0,则返回0.若Q为正数,返回Q。若Q为负数,返回0.
2,P为负数。扫描一遍数组,去掉绝对值最小的负数。
3,P为正数。若数组中存在正数值,那么去掉最小的正数值,否则去掉绝对值最大的负数值。
对于P的正负性判定,可不需要直接求乘积,而是扫描一遍数组,求出数组中正数、负数、和0的个数,从而判断P的正负性,遍历的同时求出绝对值最小的正数和负数,绝对值最大的正数和负数,复杂度为o(N).
转载于:https://www.cnblogs.com/wen-ge/p/4127150.html
编程之美----子数组的最大乘积相关推荐
- 编程之美-子数组之和的最大值(二维)方法整理
[试题描述] 方法一:时间复杂度O(N^2 * M^2 * Sum的时间复杂度) 改进: 可以做一些预处理,并把计算结果保存下来,以空间换时间.通过"部分和"的O(N*M)预处理, ...
- 编程之美-子数组的最大乘机方法整理
[试题描述] 方法一:以空间换时间,时间复杂度为O(n) 方法二:时间复杂度O(n)
- 编程之美2.13 子数组的最大乘积
这道题目是求 n-1 个数的最大乘积,即数组大小为 n,则会存在 n 个 n-1 的连续数字,那么,我们需要寻找的是最大的那一个乘积. 其实看到题目,感觉很简单,循环走两遍数组 ...
- 【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大
Add Date 2014-09-23 Maximum Product Subarray Find the contiguous subarray within an array (containin ...
- 编程之美2.13子数组的最大乘积
题目: 给定一个长度为N的数组,只许用乘法,不许用除法,计算任意(N-1)个数的组合中乘积最大的一个组,并写出算法的时间复杂度. 如果把所可能的乘积找出来,共有(N-1)个数,n个n-1的数的组合,时 ...
- 子数组的最大乘积 Maximum Product Subarray
为什么80%的码农都做不了架构师?>>> 问题: Find the contiguous subarray within an array (containing at lea ...
- java 编程之美_《编程之美—微软技术面试心得》PDF 下载
第1章 游戏之乐--游戏中碰到的题目 1.1 让CPU占用率曲线听你指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 1.5 快速找出故障机器 1.6 饮料供货 1.7 光影切 ...
- 编程之美-2.14-求数组的子数组之和的最大值
这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...
- 编程之美 2.14求数组的子数组之和的最大值
对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...
最新文章
- python csv库,Python 中导入csv数据的三种方法
- python自学网址-关于python学习,最系统的学习网站看这里
- RHCSA笔记整理(1)
- Python+Selenium基本语法
- DSP入门:中断PIE
- spring 类型转换器_Spring中的类型转换
- 经济学专业向计算机方向创业,基于市场需求的经济学专业人才培养模式研究
- nginx1.8.1反向代理、负载均衡功能的实现
- 梦记录:1204(梦到观世音菩萨像)
- 推荐!这款3D全场景编辑器,能快速搭建三维大场景
- Google原生输入法LatinIME词库构建流程分析(一)
- shell命令查阅端口信息_Powershell 执行外部命令
- 一步一个脚印——开启博客
- 你应该掌握的JavaScript高阶技能(六)
- (转)一些个人感悟(2008)
- P4279 [SHOI2008]小约翰的游戏(博弈论)(Anti-SG)
- 日期间隔计算器-计算两个日期之间相差多少天-计算某天之后的多少天是几号计算器
- 解决ie11下antd-vue input的clear点击无效
- 面试ppt计算机自我介绍,面试中技巧及怎样自我介绍.ppt
- 42. DDR2内存初始化代码分析-5
热门文章
- LVS原理介绍及安装过程
- linux内存初始化初期内存分配器——memblock
- ElasticSearch客户端注解使用介绍
- [arm驱动]linux内核中断编程
- P1977 出租车拼车
- 第五章 MVC之Bundle详解
- PHP array_count_values() 函数用于统计数组中所有值出现的次数。
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务...
- 使用WCF建立起Silverlight客户端与服务端的桥梁
- 转载:关于爱情、伴侣、承诺、人生、