给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。

示例:

输入:

[1,2,3,4]

输出:

[24,12,8,6]

说明:

不要使用除法,且在 O(n) 时间复杂度内完成此题。

解答:

def productExceptSelf(self, nums):
    lennums = len(nums)
    res = [None] * lennums
    l = [nums[0]] * lennums
    r = [nums[-1]] * lennums
    for i in range(1,lennums-1):
        l[i] = l[i-1] * nums[i]  # 存放从左往右累乘结果
        r[-i-1] = r[-i] * nums[-i-1]  # 存放从右往左累乘结果
    res[0] = r[1]  # 首尾元素
    res[-1] = l[-2]  # 单独对待
    for j in range(1,lennums-1):
        res[j] = l[j-1]*r[j+1]  # 其余元素l[j-1]*r[j+1]即可得到
    return res