Kth Missing Positive Number

easy array binary search

Problem

Given a sorted array of strictly increasing positive integers and an integer k, return the kth positive integer missing from the array.

Inputarr = [2, 3, 4, 7, 11], k = 5
Output9
Missing: 1, 5, 6, 8, 9, 10, 12, … The 5th is 9.

def find_kth_positive(arr, k):
    lo, hi = 0, len(arr)
    while lo < hi:
        mid = (lo + hi) // 2
        if arr[mid] - mid - 1 < k:
            lo = mid + 1
        else:
            hi = mid
    return lo + k
function findKthPositive(arr, k) {
  let lo = 0, hi = arr.length;
  while (lo < hi) {
    const mid = (lo + hi) >> 1;
    if (arr[mid] - mid - 1 < k) lo = mid + 1;
    else hi = mid;
  }
  return lo + k;
}
class Solution {
    public int findKthPositive(int[] arr, int k) {
        int lo = 0, hi = arr.length;
        while (lo < hi) {
            int mid = (lo + hi) >>> 1;
            if (arr[mid] - mid - 1 < k) lo = mid + 1;
            else hi = mid;
        }
        return lo + k;
    }
}
int findKthPositive(vector<int>& arr, int k) {
    int lo = 0, hi = arr.size();
    while (lo < hi) {
        int mid = (lo + hi) / 2;
        if (arr[mid] - mid - 1 < k) lo = mid + 1;
        else hi = mid;
    }
    return lo + k;
}
Time: O(log n) Space: O(1)