📌  相关文章
📜  最小正整数K,使得所有数组元素可以通过最多递增或递减K来相等(1)

📅  最后修改于: 2023-12-03 15:40:16.559000             🧑  作者: Mango

最小正整数K,使得所有数组元素可以通过最多递增或递减K来相等

问题描述

给定一个整数数组 nums,找到最小正整数K,使得 nums 中的所有元素可以通过最多递增或递减K来相等。

解法分析

我们可以先找到数组中的最大值和最小值,然后计算它们的差值diff。如果diff为0,则已经满足条件。否则我们需要将所有元素逐个转化为相同的元素,最多可以经过maxDiff或者minDiff此类diff次调整。将diff平均分配到这些转化中,如果diff除以nums长度有余数,则增加一次转化。

代码实现
def findMinK(nums):
    if len(nums) < 2:
        return 0
    maxNum, minNum = max(nums), min(nums)
    diff = maxNum - minNum
    if diff == 0:
        return 0
    cnt = len(nums)
    avgDiff, extraDiff = divmod(diff, cnt)
    return 1 if extraDiff else avgDiff
测试样例
assert findMinK([1, 2, 3, 4, 5]) == 0
assert findMinK([1, 3, 5, 7, 9]) == 4
assert findMinK([1, 5, 10, 15]) == 2