程序查找除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]
      猜你喜欢