JavaScript 中的绝对值和最小化
假设,我们有一个排序的整数数组,我们称之为 arr。我们需要找到这样一个整数 x 的值 -
abs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)
是可能的最小值(这里 abs 表示绝对值)。如果有多个可能的答案,则输出最小的一个。
例如 -
为了,
arr = [2, 4, 7],
输出应该是 -
absoluteValuesSumMinimization(arr) = 4
因为 abs(2 - 4) + abs(4 - 4) + abs(7 - 4) = 5 这是我们可以用任何数字实现的最小值。
我们知道,
arr.length/2
返回一半的长度。
对于偶数长度的数组,这将在中间的右侧。对于奇数长度的数组,它将是中间的。
Math.ceil(arr.length/2) 如有必要会向上舍入,因此 5 数组的中间值为 2.5 -> 3。这使得奇数长度数组减一。
Math.ceil(arr.length/2)-1 下降一个索引。这将纠正所有阵列的一对一错误。
示例
以下是代码 -
const arr = [2, 4, 7];输出结果const absoluteValuesSumMinimization = (arr = []) => {
const res = [];
arr.forEach(num => {
const sum = arr.reduce((accum, next) => {
return accum + Math.abs(next - num);
}, 0);
res.push(sum);
});
const lowest = Math.min(...res);
return arr[res.indexOf(lowest)];
};
console.log(absoluteValuesSumMinimization(arr));
以下是控制台上的输出 -
4
以上是 JavaScript 中的绝对值和最小化 的全部内容, 来源链接: utcz.com/z/317489.html