一个快递公司希望在一条街道建立新的服务中心。公司统计了该街道中所有区域在地图上的位置,并希望能够以此为依据为新的服务中心选址,使服务中心到所有区域的距离的总和最小。
给你一个数组 positions,其中 positions[i] = [left, right] 表示第 i 区域在街道上的位置,其中left 代表区域的左侧的起点,right 代表区域的右侧终点。
假设服务中心的位置为 location:
选择最佳的服务中心位置为 location,请返回最佳的服务中心位置到所有区域的距离总和的最小值;
第一行,一个整数 N 表示区域个数;
后面 N 行,每行两个整数,表示区域的左右起点终点;
运行结果输出一个整数,表示服务中心位置到所有区域的距离总和的最小值。
function getDistanceSum(n, arr) {
const tmp = [];
for (let i = 0; i < n; i++) {
tmp.push(arr[i][0]);
tmp.push(arr[i][1]);
}
tmp.sort((a, b) => a - b);
const min = tmp[0];
const max = tmp[tmp.length - 1];
let ans = Infinity;
for (let i = min; i <= max; i += 0.5) {
let dis = 0;
for (let j = 0; j < n; j++) {
const l = arr[j][0];
const r = arr[j][1];
if (r < i) dis += i - r;
else if (i < l) dis += l - i;
}
ans = Math.min(ans, dis);
}
return ans;
}
3
10 20
30 40
50 60
30
下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。