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

示例:

输入: [1,2,3,4]
输出: [24,12,8,6]

提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在32位整数范围内。

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

进阶:
你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组不被视为额外空间。)

1.前缀乘法
Python解答:

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        left = nums[::]
        for i in range(1, len(nums)):
            left[i] = left[i]*left[i-1]
        for j in range(len(nums)-2, -1, -1):
            nums[j] = nums[j]*nums[j+1]
        for k in range(len(nums)):
            if k == 0:
                nums[k] = nums[1]
            elif k == len(nums)-1:
                nums[k] = left[len(nums)-2]
            else:
                nums[k] = left[k-1]*nums[k+1]
        return nums
最后修改日期: 2021年9月2日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。