1060. Missing Element in Sorted Array
dataset 5 * 10 ^ 4
Method 1
Linear O(n)
class Solution:
    def missingElement(self, nums: List[int], k: int) -> int:
        n = len(nums)
        left = nums[0]
        for i in range(n):
            while left < nums[i]:
                k -= 1
                if k == 0:
                    return left
                left += 1
            left += 1
        # need to -1 if it comes here, couse if it +1 when leave the loop last time
        return left - 1 + k 
Method 2
Binary Search
class Solution:
    def missingElement(self, nums: List[int], k: int) -> int:
        n = len(nums)
        l, r = nums[0], nums[-1] + k
        def check(num):
            idx = bisect.bisect_left(nums, num)
            missing = num - nums[0] - idx
            if idx == n or num != nums[idx]:
                missing += 1
        
            if missing >= k:
                return True
            return False
        while l < r:
            mid = l + (r-l) // 2
            if check(mid):
                r = mid
            else:
                l = mid + 1
        
        return l