1228. Missing Number In Arithmetic Progression

In some array arr, the values were in arithmetic progression: the values arr[i+1] - arr[i] are all equal
for every 0 <= i < arr.length - 1.

Then, a value from arr was removed that was not the first or last value in the array.

Return the removed value.

Example 1:

Input: arr = [5,7,11,13]
Output: 9
Explanation: The previous array was [5,7,9,11,13].

Example 2:

Input: arr = [15,13,12]
Output: 14
Explanation: The previous array was [15,14,13,12].

Constraints:

  3 <= arr.length <= 1000
  0 <= arr[i] <= 10^5

public int missingNumber(int[] arr) {
    int l = 0, r = arr.length-1;
    while(l < r) {
        int mid = l + (r-l) / 2;
        double left = (double)Math.abs((arr[mid]-arr[0])) / (mid+1);
        double right = (double)Math.abs((arr[arr.length-1]-arr[mid])) / (arr.length-mid);
        if(left <= right) {
            l = mid+1;
        } else {
            r = mid;
        }
    }
    return (arr[r]+arr[r-1]) / 2;
}