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

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告