(CVTE 笔试题)已知一个数组,不使用除法构造另一数组。
来源:互联网 发布:施工组织设计软件 编辑:程序博客网 时间:2024/05/21 05:37
题目:给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法;要求O(1)空间复杂度和O(n)的时间复杂度。
样例输入:[2,5,6,8]
计算过程:
- 2*5*6*8/2=240
- 2*5*6*8/5=96
- 2*5*6*8/6=80
- 2*5*6*8/8=60
样例输出:[240,96,80,60]
b[j]=[5*6*8,2*6*8,2*5*8,2*5*6]
观察b[j]的构造公式,发现它实际上是由两部分相乘得到。即b[j]是a[j]左边的数和a[j]右边的数相乘,中间的a[j]被除掉了。接下来就是怎么实现的问题了。先从左向右扫描a[N]数组,将坐标左边的元素累乘起来存入b[N];然后可用一个变量保存右边数组元素乘积,从右向左扫描一遍,依次将b[N]和乘积变量相乘即可。
代码实现:
public static void main(String[] arg) { int[] A=new int[]{2,5,6,8}; int[] B=new int[A.length]; B[0]=1; for(int j=1;j<A.length;j++){ B[j]=A[j-1]*B[j-1]; } for(int k=A.length-1;k>0;k--){ B[k]=B[k]*B[0]; B[0]=A[k]*B[0]; } for (int l:B) { System.out.print(l+""); } }
阅读全文
4 0
- (CVTE 笔试题)已知一个数组,不使用除法构造另一数组。
- 一道腾讯笔试题(已知一个数组,不使用除法构造另一数组)
- 某年的腾讯笔试题——不使用除法运算产生新数组
- 【腾讯2012年实习生笔试加分题】不使用除法,由给定数组a[N]构造数组b [N],其中b[j]=a[0]*a[1]*…*a[N-1] / a[j]
- 不用除法构造数组
- 给定一个数组a[N],我们希望构造数组b[N]。。(2013腾讯实习生笔试题)
- 腾讯的一道笔试加分题——给定一个数组构造另一个数组
- 【搜狗笔试题】给定一个数组a[N],我们希望构造数组b[N]
- CVTE笔试题一:求数组中第n小的数
- 不使用除法,线性复杂度给数组赋值
- 48.构建乘积数组(不能用除法)
- 已知数组a[n],求数组b[n].要求:b[i]=a[0]*a[1]*……*a[n-1]/a[i],不能用除法。
- CVTE笔试题
- CVTE笔试题
- CVTE笔试题
- CVTE水果笔试题
- CVTE笔试题
- cvte笔试题
- Java Web自定义MVC框架
- Java菜鸟学习日记36
- IntelliJ IDEA 当pom.xml更新时,自动加载pom.xml
- java乱码问题处理
- 华为OJ python实现
- (CVTE 笔试题)已知一个数组,不使用除法构造另一数组。
- 如何从零开始学Java
- mysql 5.7 开启半同步复制
- 在RT-Thread上使用龙芯1c库中的硬件I2C接口
- [Java-Jdk]--OpenJDK和SunJDK的区别
- 去耦电容与旁路电容的作用
- DC学院数据分析师(入门)学习笔记----利用python操作MySQL数据库
- 百度ife前端2015春task练习记录01
- 解析xml文件