สมมติว่าเรามีรายการ nums1 และ nums2 สองรายการ ซึ่งแสดงถึงเมตริกของเซนเซอร์ แต่ละรายการมีค่าที่ไม่ซ้ำกัน ดังนั้น a ≠ b หนึ่งในสองรายการนี้มีเมตริกเซ็นเซอร์ที่แม่นยำ แต่อีกรายการหนึ่งมีข้อผิดพลาด ในรายการผิดพลาดค่าหนึ่ง ที่ไม่ใช่ค่าสุดท้ายที่ถูกทิ้ง และค่าที่ไม่ถูกต้องถูกวางไว้ที่ส่วนท้ายของรายการนั้น เราต้องหามูลค่าที่แท้จริงที่ลดลง
ดังนั้น หากอินพุตเป็น nums1 =[5, 10, 15] nums2 =[10, 15, 8] ผลลัพธ์จะเป็น 5 เนื่องจากรายการแรก nums1 มีค่าจริง =[5, 10, 15], ในอาร์เรย์ที่สองที่ลดลงและ 8 ถูกแทรกในตอนท้าย
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ต่ำ :=0
- สูง :=
- ขนาดของ nums1 - 1
- ในขณะที่ต่ำ <สูง ทำ
- กลาง :=ชั้นของ (ต่ำ + สูง) / 2
- ถ้า nums1[mid] เหมือนกับ nums2[mid] แล้ว
- ต่ำ :=กลาง + 1
- มิฉะนั้น
- สูง :=กลาง
- ส่งคืน nums1[low] หาก nums1[low + 1] เหมือนกับ nums2[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