LeetCode: Kth Missing Positive Number
Question
Given an array arr of positive integers sorted in a strictly increasing order, and an integer k.
Find the kth positive integer that is missing from this array.
Solution#1
def find_kth_positive(arr, k)
fetch_number = ((1..arr.max).to_a - arr).fetch(k-1, nil)
if fetch_number.nil?
# the maximum point for searching missing number shall add k value
((1..arr.max+k).to_a - arr).fetch(k-1)
else
((1..arr.max).to_a - arr).fetch(k-1)
end
end
Solution#2
def find_kth_positive(arr, k)
left = 0
right = arr.length - 1
while left <= right
mid = (left + right) >> 1
if arr[mid] - mid - 1 < k
left = mid + 1
else
right = mid - 1
end
end
left + k
end
Comments