You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/* Given an infinite sorted array. Find position of element in this array */
//since it is an infinite array therefore arr.length cannot be used to find end. But we need to find end for binary search. So we take chunks/small sizes of boxes for finding start end range
public class InfiniteArray {
public static void main(String[] args) {
int[] arr = {3, 5, 7, 9, 10, 90,
100, 130, 140, 160, 170};
int target = 10;
System.out.println(ans(arr, target));
}
static int ans(int[] arr, int target) {
// first find the range
// first start with a box of size 2
int start = 0;
int end = 1;
// condition for the target to lie in the range
while (target > arr[end]) {
int temp = end + 1; // this is my new start
// double the box value
// end = previous end + sizeofbox*2
end = end + (end - start + 1) * 2;
start = temp;
}
return binarySearch(arr, target, start, end);
}
static int binarySearch(int[] arr, int target, int start, int end) {