Python中数组自身元素的乘积


假设我们有一个名为nums的数组,其中包含n个整数,其中n > 1。我们必须找到一个名为output的数组,使得output[i]等于nums中所有元素的乘积,除了nums[i]。因此,如果输入数组是[1,2,3,4],则输出将是[24,12,8,6]。我们必须在不使用除法运算符的情况下解决这个问题。

为了解决这个问题,我们将遵循以下步骤:

  • right_mul := 一个与nums大小相同的数组,将其填充为0
  • right_mul的最后一个元素 = nums的最后一个元素
  • 对于i从1到nums的长度
    • right_mul[nums的长度 – i – 1] = right_mul[nums的长度 – i] * nums[nums的长度 – i – 1]
  • output := 一个与nums大小相同的数组,将其填充为0
  • prefix := 1,index := 0
  • 当index < output的长度 – 1
    • output[index] := prefix * right_mul[index + 1]
    • prefix := prefix * nums[index]
    • index := index + 1
  • output的最后一个元素 := prefix
  • 返回output

让我们看看下面的实现以获得更好的理解:

示例

在线演示

class Solution(object):
   def productExceptSelf(self, nums):
      right_multiply = [0] * len(nums)
      right_multiply[-1]=nums[-1]
      for i in range(1,len(nums)):
         right_multiply[len(nums)-i-1] = right_multiply[len(nums)-i] * nums[len(nums)-i-1]
      output = [0]*len(nums)
      prefix = 1
      current_index = 0
      while current_index < len(output)-1:
         output[current_index] = prefix * right_multiply[current_index+1]
         prefix *= nums[current_index]
         current_index +=1
      output[-1] = prefix
      return output
ob1 = Solution()
print(ob1.productExceptSelf([1,3,5,7,9]))

输入

[1,3,5,7,9]

输出

[945, 315, 189, 135, 105]

更新于:2020年5月4日

1K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告