在Python中查找已排序数组的绝对差之和

在Python中查找已排序数组的绝对差之和

假设我们有一个已按非递减顺序排序的数组nums。我们必须制作一个名为result的与nums相同长度的数组,result [i]是nums [i]与数组中所有其他元素的绝对差的总和。

因此,如果输入的是nums = [5,7,12],则输出将是[9,7,12],因为

  • |5-5| + |5-7| + |5-12| = 0 + 2 + 7 = 9
  • |7-5| + |7-7| + |7-12| = 2 + 0 + 5 = 7
  • |5-12| + |7-12| + |12-12| = 7 + 5 + 0 = 12

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

  • res:一个新列表
  • s:0
  • n:nums的大小
  • 对于i在1到n-1的范围内,执行以下操作
    • s:= s + nums [i] – nums [0]
  • 在res末尾插入s
  • 对于i在1到n-1的范围内,执行以下操作
    • diff:=nums [i] – nums [i-1]
    • s:= s + diff *i
    • s:= s – diff *(n-i)
  • 在res末尾插入s
  • 返回res

例子

让我们看以下实现,以更好地了解-

def solve(nums):
    res = []
    s = 0
    n = len(nums)
    for i in range(1, n):
        s += nums[i] - nums[0]
    res.append(s)
    for i in range(1, n):
        diff = nums[i] - nums[i-1]
        s += diff * i
        s -= diff * (n-i)
        res.append(s)
    return res

nums = [5,7,12]
print(solve(nums))

输入

[5,7,12]

产量

[9, 7, 12]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程