长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
来源:互联网 发布:保健品网络销售业务员 编辑:程序博客网 时间:2024/04/29 08:30
法一:
时间空间复杂度都为O(n)
s1[i]:从前往后遍历到i位置的乘积(0<=i<n)
s2[j]:从后往前遍历到j位置的乘积(0<=j<n)
最后遍历一遍找出s1[k+1]*s2[k-1]的最小值(0<k<n-1),讲结果与s1[1]和s2[n-2]比较大小,最大的那个即为最大值。
法二:
设这n个数的乘积为P
当P=0时,除去n个数中的一个0,计算剩下的数的乘积,记为Q:
当Q=0时,说明n个数中至少有两个0,不管怎么组合,n-1个数的乘积都为0
当Q>0时,说明n个数中只有一个0,此时的Q当然是所要的乘积最大的结果
当Q<0时,说明n个数中只有一个0,但是除去0剩下的数的积为负数,所以还不如把0留下让乘积结果为0
当P>0时,从n个数中剔除最小的正数后所得的n-1个数的乘积即为最大值
当P<0时,从n个数中剔除绝对值最小的负数后所得的n-1个数的乘积即为最大值
实际遍历时不需要真的去求乘法的结果,只要根据符号判断乘法结果的符号即可
答案参考《编程之美》
0 0
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组
- 长度为n的整形数组,找出其中的任意n-1个数乘积最大的那一组
- 一个整型数组里除了两个数字之外,其他的数字都出现了两次。 请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n), 空间复杂度是O(1)
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 有 n 个无序整数( n>10000), 则找出其中最大的 M 个数字( 5<M<10), 所需要的最小时间复杂度为:
- 找出一个数组中出现次数超过一半的那个数字,要求时间复杂度O(n)和空间复杂度为O(1)。
- 数组a[N],存放了N个数,其中某个数重复一次。 写一个函数,找出被重复的数字.时间复杂度必须为o(N)
- 编写一个PHP函数。求任意n个正负整数里面最大的连续和,要求算法时间复杂度尽可能低。
- 编写一个PHP函数。求任意n个正负整数里面最大的连续和,要求算法时间复杂度尽可能低
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。 要求:空间复杂度O(1),时间复杂度为O(n)。
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。要求:空间复杂度O(1),时间复杂度为O(n)
- 同时找出数组的最大值和最小值,要求时间复杂度为o(n)
- 首个正数,给定一个无序整形数组,找出第一个不在数组里的正整数。要求时间复杂度0(n),空间复杂度o(1)
- 会计系统的笔记1
- 2015年,这15个IT岗位会涨薪?
- mysql 多字段排序 问题
- Linux RAR 解压缩
- VMware下安装Centos内存不足无法启动Kdump问题
- 长度为n的整数数组,找出其中任意(n-1)个乘积最大的那一组,只能用乘法,不可 以用除法。要求对算法的时间复杂度和空间复杂度作出分析,可以写思路也可以写程序。
- apple数据加密之钥匙串
- csdn积分计算详解
- 隋政军---将木屋烧烤打造成中国领先的烧烤品牌
- 10 招让你成为杰出的Java程序员
- PostgreSQL 联结方式--hash联结
- 【PHP】阿里云升级PHP到5.5详解
- mysql数据库优化
- 程序员应该投资的10件事