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