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
.
A value from arr
was removed that was not the first or last value in the array.
Given arr
, 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] <= 105
- The given array is guaranteed to be a valid array.
class Solution:
def missingNumber(self, arr: List[int]) -> int:
return (arr[0] + arr[-1]) * (len(arr) + 1) // 2 - sum(arr)
class Solution:
def missingNumber(self, arr: List[int]) -> int:
n = len(arr)
d = (arr[-1] - arr[0]) // n
for i in range(1, n):
if arr[i] != arr[i - 1] + d:
return arr[i - 1] + d
return arr[0]
class Solution {
public int missingNumber(int[] arr) {
int n = arr.length;
int x = (arr[0] + arr[n - 1]) * (n + 1) / 2;
int y = Arrays.stream(arr).sum();
return x - y;
}
}
class Solution {
public int missingNumber(int[] arr) {
int n = arr.length;
int d = (arr[n - 1] - arr[0]) / n;
for (int i = 1; i < n; ++i) {
if (arr[i] != arr[i - 1] + d) {
return arr[i - 1] + d;
}
}
return arr[0];
}
}
class Solution {
public:
int missingNumber(vector<int>& arr) {
int n = arr.size();
int x = (arr[0] + arr[n - 1]) * (n + 1) / 2;
int y = accumulate(arr.begin(), arr.end(), 0);
return x - y;
}
};
class Solution {
public:
int missingNumber(vector<int>& arr) {
int n = arr.size();
int d = (arr[n - 1] - arr[0]) / n;
for (int i = 1; i < n; ++i)
if (arr[i] != arr[i - 1] + d) return arr[i - 1] + d;
return arr[0];
}
};
func missingNumber(arr []int) int {
n := len(arr)
x := (arr[0] + arr[n-1]) * (n + 1) / 2
y := 0
for _, v := range arr {
y += v
}
return x - y
}
func missingNumber(arr []int) int {
n := len(arr)
d := (arr[n-1] - arr[0]) / n
for i := 1; i < n; i++ {
if arr[i] != arr[i-1]+d {
return arr[i-1] + d
}
}
return arr[0]
}