题目描述
给定一个数组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[i]中的数可以看作由两部分组成,一个是当前i之前的乘积,一个是i之后的乘积
- 用一个for循环分别计算出当前i之前的乘积,用一个列表保存
- 再用一个for循环从后向前,求i之后的乘积,求完后结果与前一个列表存的结果相乘
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
if not A:
return None
res=[]
temp=1
# 写这里的循环还是举个例子,边看边写
for i in range(len(A)):
res.append(temp)
temp*=A[i]
temp=1
for i in range(len(A)-1,-1,-1):
res[i]*=temp
temp*=A[i]
return res
测试用例
if __name__=='__main__':
s=Solution()
numbers=[1,2,3,4]
print(s.multiply(numbers))