79223044

Date: 2024-11-25 12:38:03
Score: 0.5
Natty:
Report link

Posting the answer that I was able to figure out:

public List<Integer> findClosestElements(int[] arr, int k, int x) {

    int left = 0, right = arr.length - k;
    int start = 0;
    while (left <= right) {
        int midpoint = left + (right - left) / 2;
        if (((midpoint + k) < arr.length ) && (x - arr[midpoint] > arr[midpoint + k] - x))    {
            left = midpoint + 1;
            start = left;
        }
        else {
            start = midpoint;
            right = midpoint - 1;
        }
    }
    start = (start == arr.length)?start - 1: start;
    List<Integer> result = new ArrayList<>(k);
    for (int i = start; i < start + k; i++) {
        result.add(arr[i]);
    }
    return result;
}

}

Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: user3036345