Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาตัวเลขที่หายไปใน Python

สมมติว่าเรามีรายการตัวเลขจาก 0 ถึง n มีตัวเลขหนึ่งตัวที่หายไป เราต้องหาตัวเลขที่หายไปด้วยวิธีที่มีประสิทธิภาพ เช่นถ้า A = [0, 1, 2, 3, 4, 5, 7, 8, 9] ตัวเลขที่หายไปคือ 6

ในการแก้ปัญหานี้ เราจะใช้วิธีการค้นหาแบบทวิภาค (binary search)

  • เรียงลำดับรายการในลำดับน้อยไปมาก
  • high = ความยาวของ A, และ low = 0
  • while low < high:
    • mid = low + (high - low) / 2
    • ถ้า A[mid] > mid:
      • high = mid
    • มิฉะนั้น:
      • low = mid + 1
  • คืนค่า low

ตัวอย่างโค้ด

class Solution(object):
    def missingNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        nums.sort()
        high = len(nums)
        low = 0
        while low < high:
            mid = low + (high - low) // 2
            if nums[mid] > mid:
                high = mid
            else:
                low = mid + 1
        return low

ob1 = Solution()
print(ob1.missingNumber([5,3,1,7,8,0,9,2,4]))

อินพุต

nums = [5,3,1,7,8,0,9,2,4]

เอาต์พุต

6