# 		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;
Comments (0)