1. 考察知识点
- 数组
2. 题目
- 给定一个数组 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] 。不能使用除法。(注意:规定 B[0] = A[1] * A[2] * … * A[n-1] ,B[n-1] = A[0] * A[1] * … * A[n-2]; )
- 题目理解:
- 其实就是算 B[n] = {B[0], B[1], B[2], B[3], …… ,B[n]},每一个B[i]就等于数组A中的所有数(除去 A[i])的乘积。
例: 有数组A[5], 求B[5]
B[0] = A[1] * A[2] * A[3] * A[4]
B[1] = A[0] * A[2] * A[3] * A[4]
B[2] = A[0] * A[1] * A[3] * A[4]
B[3] = A[0] * A[1] * A[2] * A[4]
B[4] = A[0] * A[1] * A[2] * A[3]
3. 思路
- 新建一个数组 B[], 数组 B 的长度和数组 A 的长度一致
- 算每个 B[i] 的值 ,将每个 A[n] 相乘, 遇到 A[i] 跳过
4. 代码实现
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
int[] B = new int[A.length];
for (int i = 0; i < A.length; i++) {
B[i] = 1;
for (int j = 0; j < A.length; j++) {
if (i == j){
continue;
}
else {
B[i] *= A[j];
}
}
}
return B;
}
}