// Given a sorted array/vector/list of distinct integers and a target value K,
// return the index if the target is found.
// If not, return the index where it would be if it were inserted in order.
// Function to find the index of k or the position where it should be inserted - Using Binary Search
function searchInsertPositionOfK(arr: number[], k: number): number {
let left: number = 0, right: number = arr.length - 1;
let mid: number = 0;
while (left <= right) {
mid = left + Math.floor((right - left) / 2);
if (arr[mid] === k) {
return mid;
}
// If k is smaller, search in the left half
else if (arr[mid] > k) {
right = mid - 1;
}
// If k is larger, search in the right half
else {
left = mid + 1;
}
}
// If k is not found, return the index where it should be inserted
return left;
}
const arr1: number[] = [1, 3, 5, 6, 7, 8];
const k1: number = 5;
console.log(searchInsertPositionOfK(arr1, k1));
const arr2: number[] = [1, 3, 5, 6, 7, 8];
const k2: number = 2;
console.log(searchInsertPositionOfK(arr2, k2));
const arr3: number[] = [1, 3, 5, 6, 7, 8];
const k3: number = 9;
console.log(searchInsertPositionOfK(arr3, k3));
/*
run:
2
1
6
*/