Python程序:检查数组是否可重新排列使其各元素对之间的差值相同


假设我们有一个名为nums的列表,我们需要检查是否可以重新排列nums的顺序,使得每对连续两个数字之间的差值相同。

因此,如果输入类似于nums = [8, 2, 6, 4],则输出为True,因为如果我们将nums重新排列为[2, 4, 6, 8],则每对连续数字之间的差值为2。

为了解决这个问题,我们将遵循以下步骤:

  • N := nums的大小

  • 如果 N <= 2,则

    • 返回 True

  • 对列表nums进行排序

  • targetDiff := nums[1] - nums[0]

  • 对于 i 从 2 到 N - 1 的范围,执行以下操作:

    • 如果 nums[i] - nums[i - 1] 与 targetDiff 不相同,则

      • 返回 False

  • 返回 True

示例

让我们来看下面的实现,以便更好地理解。

def solve(nums):
   N = len(nums)
   if N <= 2:
      return True
   nums.sort()
   targetDiff = nums[1] - nums[0]
   for i in range(2, N):
      if nums[i] - nums[i - 1] != targetDiff:
         return False
   return True

nums = [8, 2, 6, 4]
print(solve(nums))

输入

[8, 2, 6, 4]

输出

True

更新于:2021年10月11日

浏览量:143

启动你的职业生涯

完成课程获得认证

开始学习
广告