程序查找除Python中当前索引以外的所有元素的产品列表
假设我们有一个称为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) < 1:
         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]