題目描述
給定一個數組,請構建一個數組,其中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