檢查是否可以透過修改 Python 中的一個元素來使兩個陣列相等


假設我們有兩個陣列 nums1 和 nums2 以及另一個值 k。我們必須檢查是否可以透過以下方式修改 nums1 中的任何一個元素(僅一次)來使這兩個陣列相等:我們可以將範圍 [-k, k] 內的任何值新增到 nums1 的任何元素中。

因此,如果輸入類似於 nums1 = [5,7,11] nums2 = [5,5,11] k = 8,則輸出將為 True,因為我們可以將 -2(在 [-8,8] 範圍內)與 nums1[1] 相加使其變為 5,然後它將與 nums2 相同。

要解決此問題,我們將遵循以下步驟 -

  • 對列表 nums1 和 nums2 進行排序
  • temp := False
  • idx := -1
  • 對於 i 從 0 到 nums1 的大小 - 1,執行
    • 如果 nums1[i] 與 nums2[i] 不相同,則
      • 如果 temp 為真,則
        • 返回 False
      • temp := True
      • idx := i
  • 如果 idx 為 -1 或 |nums1[idx]-nums2[idx]| <= k,則
    • 返回 True
  • 返回 False

讓我們看看以下實現以獲得更好的理解 -

示例程式碼

線上演示

def solve(nums1, nums2, k):
   nums1.sort()
   nums2.sort()

   temp = False

   idx = -1
   for i in range(len(nums1)):
      if nums1[i] != nums2[i]:
         if temp:
           return False
         temp = True
         idx = i

   if idx == -1 or abs(nums1[idx]-nums2[idx]) <= k:
      return True
   return False

nums1 = [5,7,11]
nums2 = [5,5,11]
k = 8
print(solve(nums1, nums2, k))

輸入

[5,7,11], [5,5,11], 8

輸出

True

更新於: 2021年1月16日

165 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告