假设我们有一个称为nums的数字列表,我们必须找到一个新列表,以使新生成的列表的索引i处的每个元素都是原始列表中除索引i处的所有数字之外的所有数字的乘积。在这里,我们必须解决它而不使用除法。
因此,如果输入类似于nums = [2、3、4、5、6],那么输出将为[360、240、180、144、120]
为了解决这个问题,我们将遵循以下步骤-如果nums <1的大小返回数字
l:= nums的大小
左:=大小为l的列表,最初所有值均为null
right:=大小为l的列表,最初所有值均为null
温度:= 1
对于范围从0到nums的i,执行temp:= temp * nums [i-1]
左[i]:=温度
左[i]:=温度
如果我等于0,那么
除此以外,
温度:= 1
对于范围为nums的i-1到0,减小1,执行temp:= temp * nums [i +1]
正确的[i]:=临时
正确的[i]:=临时
如果我与nums的大小相同-1,则
除此以外,
对于范围从0到nums的i,执行左[i]:=左[i] *右[i]
返回左
让我们看下面的实现以更好地理解-
示例class Solution:
def solve(self, nums):
if len(nums)
return nums
l = len(nums)
left = [None] * l
right = [None] * l
temp = 1
for i in range(len(nums)):
if i == 0:
left[i] = temp
else:
temp = temp * nums[i - 1]
left[i] = temp
temp = 1
for i in range(len(nums) - 1, -1, -1):
if i == len(nums) - 1:
right[i] = temp
else:
temp = temp * nums[i + 1]
right[i] = temp
for i in range(len(nums)):
left[i] = left[i] * right[i]
return left
ob = Solution()nums = [2, 3, 4, 5, 6]
print(ob.solve(nums))
输入值[2, 3, 4, 5, 6]
输出结果[360, 240, 180, 144, 120]