Python Reduce (out of time)
class Solution(object):
def constructArr(self, a):
"""
:type a: List[int]
:rtype: List[int]
"""
B = []
if len(a) == 0:
return B
else:
for i in range(len(a)):
tmp = a[i]
a[i] = 1
B.append(reduce(lambda x,y:x*y, a))
a[i] = tmp
return B
分为上下三角:(不可以x, y, b 连续赋值,因为指针指向同一存储空间)?
class Solution(object):
def constructArr(self, a):
"""
:type a: List[int]
:rtype: List[int]
"""
n = len(a)
x = [1] * n
y = [1] * n
b = [1] * n
for i in range(1, n):
x[i] = x[i-1] * a[i-1]
for j in range(n-2, -1, -1):
y[j] = y[j+1] * a[j+1]
for i in range(n):
b[i] = x[i] * y[i]
return b
|