题目描述
给定一个数组 ,请构建一个数组 ,其中B中的元素 。不能使用除法。
分析
- 方法一:暴力解法双层循环,时间复杂度O( );空间复杂度O(1)。
- 方法二:构建前向乘积数组 ,即 ;构建后向乘积数组 ,即 ;通过 来求 : 时间复杂度:O(n);空间复杂度O(n)。但是C与D数组的临时存储可全程用B来代替,因此可将空间复杂度降为O(1)。
代码
- 方法一:
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
B = []
length = len(A)
for i in range(length):
num = 1
for j in range(length):
if i!=j:
num *= A[j]
B.append(num)
return B
- 方法二:(优)
# -*- coding:utf-8 -*-
class Solution:
def multiply(self, A):
# write code here
if not A:
return []
length = len(A)
B = [1]*length
for i in range(length-1):
B[i+1] *= B[i]*A[i]
temp = 1
for i in range(length-2, -1, -1):
temp *= A[i+1]
B[i] *= temp
return B