Formatted question description: https://leetcode.ca/all/1228.html

# 1228. Missing Number In Arithmetic Progression

## Level

Easy

## Description

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`

## Solution

For the original arithmetic progression (no value removed), all pairs of adjacent numbers in the array have the same difference.

After a value is removed, then one pair of adjacent numbers in the array will have a difference that has a greater absolute value.

If a difference with a greater absolute value is found, then find the two numbers with such the difference with a greater absolute value, and the removed value is the average value of the two numbers.

```
class Solution {
public int missingNumber(int[] arr) {
int length = arr.length;
int prevDif = arr[1] - arr[0];
for (int i = 2; i < length; i++) {
int curDif = arr[i] - arr[i - 1];
if (Math.abs(curDif) < Math.abs(prevDif))
return arr[i - 1] - curDif;
else if (Math.abs(curDif) > Math.abs(prevDif))
return arr[i - 1] + prevDif;
prevDif = curDif;
}
return arr[length - 1] + prevDif;
}
}
```