剑指offer46--乘积数组的构建
来源:互联网 发布:lol爷大干淘宝零食店 编辑:程序博客网 时间:2024/06/16 03:07
一、题目
题目:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1],不能使用除法。
二、举例
例如:A[]={1,2,3,4}求B[]
B[0]=A[1]×A[2]×A[3]=2×3×4=24
B[1]=A[2]×A[3]×A[0]=3×4×1=12
B[2]=A[3]×A[0]×A[1]=4×1×2=8
B[0]=A[1]×A[2]×A[3]=2×3×4=24
B[1]=A[2]×A[3]×A[0]=3×4×1=12
B[2]=A[3]×A[0]×A[1]=4×1×2=8
B[3]=A[0]×A[1]×A[2]=1×2×3=6
三、思想
(1)遍历数组A,没遍历一次就在数组B中增加一个对应的元素
(2)数组B中要写入是是B[i]时,对应数组A[i]的值暂时为1,这样将A中的所有元素相乘
(3)不知道这个思路是不是太简单了,看大神的思路也没太看懂,先这样吧,下一次再补充
四、程序
package 剑指offer;/*题目:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1], *其中B中的元素B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1],不能使用除法。*/public class Test51 {public static int[] findArrayB(int arrayA[]){if(arrayA == null || arrayA.length < 1){return null;}int arrayB[] = new int[arrayA.length];for(int i = 0; i < arrayA.length; i++){arrayB[i] = toFindNum(arrayA, i);}return arrayB;}// 根据下标元素i去发现要存入B[i]中的numpublic static int toFindNum(int arrayA[], int i){int num = 1;for(int j = 0; j < arrayA.length; j++){if(j != i){num *= arrayA[j];}else if(j == i){num *= 1;}}return num;}public static void main(String args[]){int arrayA[] = new int[]{1, 2, 3, 4};int arrayB[] = new int[]{};arrayB = findArrayB(arrayA);for(int i = 0; i < arrayB.length; i++){System.out.println(arrayB[i]);}}}------output------
241286
1 0
- 剑指offer46--乘积数组的构建
- 剑指offer--构建乘积数组
- 《剑指offer》构建乘积数组
- 剑指offer-构建乘积数组
- 剑指offer:构建乘积数组
- 剑指offer:构建乘积数组
- 剑指offer:构建乘积数组
- [剑指offer]构建乘积数组
- 剑指offer|构建乘积数组
- 剑指Offer_51_构建乘积数组
- 《剑指offer》-构建乘积数组
- 剑指offer 构建乘积数组
- 构建乘积数组--剑指Offer
- 【剑指offer】构建乘积数组
- 《剑指offer》构建乘积数组
- 剑指offer-构建乘积数组
- 剑指offer--构建乘积数组
- 构建乘积数组 剑指offer
- jQuery查找和过滤
- 这只是个测试
- jQuery属性相关
- 006——hibernate一对一关联映射
- 1478 括号序列的最长合法子段
- 剑指offer46--乘积数组的构建
- 263. Ugly Number--LeetCode Record
- spring作用域
- C++ string和stringstream的简单运用
- 初识Subversion
- maven导入eclipse工程,设置默认jdk
- 数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
- Python 小甲鱼教程 课后练习30 番外篇_需要谨记!!!
- ASP.NET GirdView后台动态绑定数据