📅  最后修改于: 2023-12-03 14:55:18.981000             🧑  作者: Mango
给定一个由正整数组成的数组 nums 和一个整数 k。你需要从数组中选取 k 对元素,使它们的差最大化。每一对元素的差值要等于数组中较大元素减去较小元素,也就是说它们的绝对差是相同的。
此题可以用贪心算法进行求解。首先对数组进行排序,然后取出最大的 k 个数和最小的 k 个数。相应下标的两个数之差即为一组。这样可以保证组成的 k 对数的差值最大化。
def maxKPairs(nums, k):
n = len(nums)
nums.sort()
res = 0
l, r = 0, n-1
while k > 0:
if l >= r:
break
res += nums[r] - nums[l]
l += 1
r -= 1
k -= 1
return res