演算法 除自身以外陣列的乘積

2021-10-09 06:21:56 字數 1115 閱讀 9344

如題:

對於乙個長度為 n 的整數陣列 nums,其中 n > 1,返回輸出陣列 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。

要求:不要使用除法,且在 o(n) 時間複雜度內完成此題。

題解:要求1:不能使用除法,那只能相乘,例如對於nums = 【1,2,3,4】這樣乙個陣列,求 0 號位的值,則只能使用nums[1]*nums[2]*nums[3]

要求2:在o(n)時間內,則不可以巢狀迴圈。

所以解法如下:

from typing import list

class

solution

:def

productexceptself

(self, nums: list[

int])-

> list[

int]

: l =

[nums[0]

] size =

len(nums)

if size ==0:

return

0# 求從左邊開始遞增的乘積

r =[nums[size-1]

]for index in

range(1

,size-1)

: multipy = l[index-1]

*nums[index]

# 求從右邊開始遞減的乘積

for index in

range

(size-2,

0,-1

):multipy = r[size-

2-index]

*nums[index]

# 用index左邊遞增的乘積 * 右邊遞減的乘積

res =

[r[-1]

]for index in

range(1

,size-1)

: multipy = l[index-1]

*r[size-

2-index]-1

])return res

除自身以外陣列的乘積

目錄 1 題目描述 2 題目分析 3 實現 給定長度為 n 的整數陣列nums,其中 n 1,返回輸出陣列output,其中output i 等於nums中除nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成...

除自身以外陣列的乘積

給定長度為 n 的整數陣列nums,其中 n 1,返回輸出陣列output,其中output i 等於nums中除nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以在常數空間複雜度內完成這個...

除自身以外陣列的乘積

提交 總結給你乙個長度為 n 的整數陣列 nums,其中 n 1,返回輸出陣列 output 其中 output i 等於 nums 中除 nums i 之外其餘各元素的乘積。示例 輸入 1,2,3,4 輸出 24,12,8,6 說明 請不要使用除法,且在 o n 時間複雜度內完成此題。高階 你可以...