题目描述
https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/
思路题解
前缀和:
class Solution:
def constructArr(self, a: List[int]) -> List[int]:
if not a:return []
n=len(a)
l,r=[0]*n,[0]*n
l[0],r[0]=a[0],a[n-1]
for i in range(1,n):
l[i]=l[i-1]*a[i]
r[i]=r[i-1]*a[n-i-1]
i+=1
ans=[r[n-2]]
for i in range(1,n-1):
ans.append(l[i-1]*r[n-i-2])
ans.append(l[n-2])
return ans
通过:50 50
前缀和改进版:
class Solution:
def constructArr(self, a: List[int]) -> List[int]:
if not a:return []
n=len(a)
ans=[0]*n
ans[0]=1
for i in range(1,n):
ans[i]=ans[i-1]*a[i-1]
tmp=1
for i in range(n-2,-1,-1):
tmp=tmp*a[i+1]
ans[i]=ans[i]*tmp
return ans