输入:一个点的x坐标和y坐标、点的集合
输出:①需要有有效的点,即相同x或者相同y的点,否则直接返回-1;
②找出曼哈顿距离最小的点,如果有多个,返回第一个的下标。
/**
* @param {number} x
* @param {number} y
* @param {number[][]} points
* @return {number}
*/
var nearestValidPoint = function(x, y, points) {
// 因为要求最小曼哈顿距离,所以将lastLength设为最大距离
let lastLength = 10000;
let index = -1;
for(let i=0; i<points.length; i++){
let X = points[i][0];
let Y = points[i][1];
// 判断是否为有效点
if(x==X || y==Y){
let length = Math.abs(x-X) + Math.abs(y-Y);
// 判断曼哈顿距离是否比之前小
if(lastLength>length){
index = i;
lastLength = length;
}
}
}
return index;
};