1、遍历
我们可以遍历二维数组中的每一个节点,筛选满足条件的有效点。而后我们判断当前节点的曼哈顿距离是否最短,若是则进行更新,否则继续进行循环。
class Solution {
public:
int nearestValidPoint(int x, int y, vector<vector<int>> &points) {
int dis = INT_MAX, res = -1;
for (int i = 0; i < points.size(); ++i) {
if ((points[i][0] == x || points[i][1] == y) && abs(points[i][0] - x) + abs(points[i][1] - y) < dis) {
dis = abs(points[i][0] - x) + abs(points[i][1] - y);
res = i;
}
}
return res;
}
};