# Main & important point
why used "Math.max for i"?
this is used for
ex. [1,5,10]
k = 1
x = 4
ans->5
--> so there we get mid = arr[0]
that time i will be -1 if we used mid-1
so for this test case i used Math.max
int n = arr.length;
int low = 0;
int high = n-1;
int mid=0;
while(low <= high){
mid = (low+high)/2;
if(arr[mid] == x){
break;
}else if(x > arr[mid]){
low = mid+1;
}else{
high = mid-1;
}
}
List<Integer> res = new ArrayList<>();
int i=Math.max(0,mid-1);
int j=i+1;
while(res.size() < k){
if(i<0){
res.add(arr[j++]);
}else if(j==n){
res.add(arr[i--]);
}else{
int diff1 = Math.abs(arr[i]-x);
int diff2 = Math.abs(arr[j]-x);
if(diff1 <= diff2){
res.add(arr[i--]);
}else{
res.add(arr[j++]);
}
}
}
Collections.sort(res);
return res;