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
广告