【剑指offer】构建乘积数组-Java&python实现
题目描述
给定一个数组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]。不能使用除法。
1.分析
思路
两重循环,在遍历数组A的时候,A[i]赋值为1,计算B[i]。
2.代码
//java实现
import java.util.ArrayList;
public class Solution {
public int[] multiply(int[] A) {
int len = A.length;
int[] B = new int[len];
if (len == 0){
return null;
}
for (int i = 0;i < len;i++){
int tmp = A[i];
A[i] = 1;
int Bi = 1;
for (int j = 0;j < len;j++){
Bi =Bi*A[j];
}
B[i] = Bi;
A[i] = tmp;
}
return B;
}
}
//python实现
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
length = len(A)
B = []
if length == 0:
return B
for i in range(length):
tmp = A[i]
A[i] = 1
Bi = 1
for j in A:
Bi*=j
B.append(Bi)
A[i] = tmp
return B
3.复杂度
时间复杂度:O(N2)