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]
广告