Python程式:從錯誤列表中找出丟失的正確感測器值


假設我們有兩個列表nums1和nums2,它們代表感測器指標。每個列表都包含唯一值,因此a≠b。這兩個列表中只有一個包含準確的感測器指標,另一個包含錯誤的指標。在錯誤的列表中,一個非最後一個值被丟棄,並在列表末尾添加了一個錯誤的值。我們必須找到實際丟失的值。

因此,如果輸入類似於nums1 = [5, 10, 15] nums2 = [10, 15, 8],則輸出將為5,因為第一個列表nums1包含實際值 = [5, 10, 15],在第二個陣列中,5被丟棄,並在末尾插入了8。

為了解決這個問題,我們將遵循以下步驟:

  • low := 0
  • high :=
  • nums1的大小 - 1
  • 當 low < high 時,執行:
    • mid := floor((low + high) / 2)
    • 如果 nums1[mid] 等於 nums2[mid],則:
      • low := mid + 1
    • 否則:
      • high := mid
  • 如果 nums1[low + 1] 等於 nums2[low],則返回 nums1[low];否則返回 nums2[low]

示例

讓我們看看下面的實現以更好地理解:

def solve(nums1, nums2):
   low, high = 0, len(nums1) - 1

   while low < high:
      mid = (low + high) // 2
      if nums1[mid] == nums2[mid]:
         low = mid + 1
      else:
         high = mid

   return nums1[low] if nums1[low + 1] == nums2[low] else nums2[low]

nums1 = [5, 10, 15]
nums2 = [10, 15, 8]
print(solve(nums1, nums2))

輸入

[5, 10, 15], [10, 15, 8]

輸出

5

更新於:2021年10月18日

92 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.