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]