用 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