タイトル説明
配列を指定して、 、アレイを構築します 、前記素子B 。あなたは分裂を使用することはできません。
分析
- 方法:Oの暴力の方法は、二重のサイクルタイムの複雑さ( )O(1)の空間複雑。
- 方法2:配列の前に、製品の構築 、すなわち、 ;配列は、製品を構築します 、すなわち、 ;によって 模索します : 時間計算: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