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 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告