利用左右前缀数组,对数据进行预处理,得到 每个值左侧和右侧的乘积,则除自身外的乘积为 左侧乘积 * 右侧乘积

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型一维数组
#
class Solution:
    def timesExceptSelf(self , nums: List[int]) -> List[int]:
        # write code here
        l, r = [1 for _ in range(len(nums))], [1 for _ in range(len(nums))]
        for i in range(1, len(nums)):
            l[i] = l[i - 1] * nums[i - 1]
        for i in range(len(nums) - 2, -1, -1):
            r[i] = r[i + 1] * nums[i + 1]
        res = [0 for _ in range(len(nums))]
        for i in range(len(nums)):
            res[i] = l[i] * r[i]
        return res