程序在Python的排序列表中查找每对绝对差之和

假设我们有一个称为nums的排序数字列表,我们必须找到给定列表中每对数字之间的绝对差之和。在这里,我们将考虑(i,j)和(j,i)是不同的对。如果答案很大,则将结果修改10 ^ 9 + 7。

因此,如果输入类似于nums = [2,4,8],则输出将为24,如| 2-4-|。+ | 2 -8 | + | 4 -2 | + | 4 -8 | + | 8 -2 | + | 8-4 |。

为了解决这个问题,我们将遵循以下步骤-

  • m = 10 ^ 9 + 7

  • 总计:= 0

  • 对于范围从0到nums的i,执行

    • 总数:=总数+(i * nums [i]-(nums的大小-1-i)* nums [i])mod m

  • 返回(2 * total)mod m

让我们看下面的实现以更好地理解-

示例

class Solution:
   def solve(self, nums):
      m = 10**9 + 7
      total = 0
      for i in range(len(nums)):
         total += (i*nums[i] - (len(nums) - 1 - i)*nums[i]) % m
      return (2*total) % m
ob = Solution()
nums = [2, 4, 8]
print(ob.solve(nums))

输入值

[2, 4, 8]

输出结果

24
猜你喜欢