检查是否能重排数组,使得每对元素间的差值相同- 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]
-
对于从2到N-1的i,执行以下操作
- 如果nums[i]-nums[i-1]与targetDiff不同,则
- 返回False
- 如果nums[i]-nums[i-1]与targetDiff不同,则
- 返回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