Python中自我除以数组的乘积

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

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

  • right_mul:=一个与nums大小相同的数组,用0填充

  • right_mul的最后一个元素=数字的最后一个元素

  • 对于范围从1到nums的i

    • right_mul [数字的长度– i – 1] = right_mul [数字的长度– i] * nums [数字的长度– i – 1]

  • 输出:=一个与nums大小相同的数组,用0填充

  • 前缀:= 1,索引:= 0

  • 而索引<输出长度– 1

    • 输出[索引]:=前缀* right_mul [索引+ 1]

    • 前缀:=前缀*数字[索引]

    • 索引:=索引+ 1

  • 输出的最后一个元素:=前缀

  • 返回输出

让我们看下面的实现以更好地理解-

示例

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]