用 Python 编写程序,求出排序列表中每对数字的绝对差之和

programmingpythonserver side programming

假设我们有一个名为 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

  • total := 0

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

    • total := total +(i*nums[i] - (size of 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

相关文章