Absolute Values Sum Minimization
Given a sorted array of integers a
, your task is to determine which element of a
is closest to all other values of a
. In other words, find the element x
in a
, which minimizes the following sum:
abs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)
(where abs
denotes the absolute value)
If there are several possible answers, output the smallest one.
Example
For
a = [2, 4, 7]
, the output should besolution(a) = 4
.- for
x = 2
, the value will beabs(2 - 2) + abs(4 - 2) + abs(7 - 2) = 7
. - for
x = 4
, the value will beabs(2 - 4) + abs(4 - 4) + abs(7 - 4) = 5
. - for
x = 7
, the value will beabs(2 - 7) + abs(4 - 7) + abs(7 - 7) = 8
.
The lowest possible value is when
x = 4
, so the answer is4
.- for
For
a = [2, 3]
, the output should besolution(a) = 2
.- for
x = 2
, the value will beabs(2 - 2) + abs(3 - 2) = 1
. - for
x = 3
, the value will beabs(2 - 3) + abs(3 - 3) = 1
.
Because there is a tie, the smallest
x
betweenx = 2
andx = 3
is the answer.- for
Input/Output
[input] array.integer a
A non-empty array of integers,
sorted in ascending order
.
Solution
py
def absolute_values_sum_minimization(a):
return a[(len(a)-1) // 2]
print(absolute_values_sum_minimization([2, 4, 5, 7]))
js
function absoluteValuesSumMinimization(a) {
let min = Number.MAX_VALUE;
let minIndex = 0;
for (let i = 0; i < a.length; i++) {
let sum = 0;
for (let j = 0; j < a.length; j++) {
sum += Math.abs(a[i] - a[j]);
}
if (sum < min) {
min = sum;
minIndex = i;
}
}
return a[minIndex];
}
console.log(absoluteValuesSumMinimization([2, 4, 5, 7]));