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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短