问题:给定一个长度为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

编程之美----子数组的最大乘积相关推荐

  1. 编程之美-子数组之和的最大值(二维)方法整理

    [试题描述] 方法一:时间复杂度O(N^2 * M^2 * Sum的时间复杂度) 改进: 可以做一些预处理,并把计算结果保存下来,以空间换时间.通过"部分和"的O(N*M)预处理, ...

  2. 编程之美-子数组的最大乘机方法整理

    [试题描述] 方法一:以空间换时间,时间复杂度为O(n) 方法二:时间复杂度O(n)

  3. 编程之美2.13 子数组的最大乘积

          这道题目是求 n-1 个数的最大乘积,即数组大小为 n,则会存在 n 个 n-1 的连续数字,那么,我们需要寻找的是最大的那一个乘积.       其实看到题目,感觉很简单,循环走两遍数组 ...

  4. 【LeetCode】Maximum Product Subarray 求连续子数组使其乘积最大

    Add Date 2014-09-23 Maximum Product Subarray Find the contiguous subarray within an array (containin ...

  5. 编程之美2.13子数组的最大乘积

    题目: 给定一个长度为N的数组,只许用乘法,不许用除法,计算任意(N-1)个数的组合中乘积最大的一个组,并写出算法的时间复杂度. 如果把所可能的乘积找出来,共有(N-1)个数,n个n-1的数的组合,时 ...

  6. 子数组的最大乘积 Maximum Product Subarray

    为什么80%的码农都做不了架构师?>>>    问题: Find the contiguous subarray within an array (containing at lea ...

  7. java 编程之美_《编程之美—微软技术面试心得》PDF 下载

    第1章 游戏之乐--游戏中碰到的题目 1.1 让CPU占用率曲线听你指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 1.5 快速找出故障机器 1.6 饮料供货 1.7 光影切 ...

  8. 编程之美-2.14-求数组的子数组之和的最大值

    这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...

  9. 编程之美 2.14求数组的子数组之和的最大值

    对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...

最新文章

  1. python csv库,Python 中导入csv数据的三种方法
  2. python自学网址-关于python学习,最系统的学习网站看这里
  3. RHCSA笔记整理(1)
  4. Python+Selenium基本语法
  5. DSP入门:中断PIE
  6. spring 类型转换器_Spring中的类型转换
  7. 经济学专业向计算机方向创业,基于市场需求的经济学专业人才培养模式研究
  8. nginx1.8.1反向代理、负载均衡功能的实现
  9. 梦记录:1204(梦到观世音菩萨像)
  10. 推荐!这款3D全场景编辑器,能快速搭建三维大场景
  11. Google原生输入法LatinIME词库构建流程分析(一)
  12. shell命令查阅端口信息_Powershell 执行外部命令
  13. 一步一个脚印——开启博客
  14. 你应该掌握的JavaScript高阶技能(六)
  15. (转)一些个人感悟(2008)
  16. P4279 [SHOI2008]小约翰的游戏(博弈论)(Anti-SG)
  17. 日期间隔计算器-计算两个日期之间相差多少天-计算某天之后的多少天是几号计算器
  18. 解决ie11下antd-vue input的clear点击无效
  19. 面试ppt计算机自我介绍,面试中技巧及怎样自我介绍.ppt
  20. 42. DDR2内存初始化代码分析-5

热门文章

  1. LVS原理介绍及安装过程
  2. linux内存初始化初期内存分配器——memblock
  3. ElasticSearch客户端注解使用介绍
  4. [arm驱动]linux内核中断编程
  5. P1977 出租车拼车
  6. 第五章 MVC之Bundle详解
  7. PHP array_count_values() 函数用于统计数组中所有值出现的次数。
  8. 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务...
  9. 使用WCF建立起Silverlight客户端与服务端的桥梁
  10. 转载:关于爱情、伴侣、承诺、人生、