classSolution:defproductExceptSelf(self, nums: List[int])-> List[int]:
res =list()
res.append(1)# 第一个没有左前缀,所以定义为1for i inrange(1,len(nums)):# 构造左前缀的乘积
res.append(res[i-1]* nums[i-1])
r =1# 最后一个数字没有右后缀for i inreversed(range(len(nums))):# 逆序构造右后缀
res[i]= res[i]* r # 更新答案
r = r * nums[i]# 右后缀更新return res