【发布时间】:2019-06-29 20:48:32
【问题描述】:
问题是,给定一个坐标列表,确定离原点最近的 k 个坐标的数量。
我已经能够确定点和原点之间的距离,但是在过滤最近的 k 点时,我迷路了。我决定将此逻辑放在第二个 for 循环中,将距离数组从最近到最远排序,然后推送小于 K 的值。
function kClosest(points, k) {
let length = [];
let arr = [];
let result = [];
let a = 0;
let b = 0;
for (let i = 0; i < points.length; i++) {
a = points[i][0]; //x coord
b = points[i][1]; //y coord (y will always be second number or '1')
length.push(parseFloat(calcHypotenuse(a, b).toFixed(4)))
arr.push([points[i], length[i]])
}
function calcHypotenuse(a, b) {
return (Math.sqrt((a * a) + (b * b)));
}
for (let i = 0; i < k; i++) {
arr = arr.sort();
result.push(arr[i][0])
}
return result;
}
console.log(kClosest([
[-5, 4],
[-6, -5],
[4, 6]
], K = 2))
预期输出:[-5, 4], [4, 6] // 我有 [-5, 4], [-6, -5]
【问题讨论】:
标签: javascript arrays algorithm loops return