作者:小迅
链接:https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/solutions/2000176/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-k1yt/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目
示例
思路
直接按照题目意思,枚举所有坐标,先判断是否在同一条直线上,在判断 曼哈顿距离 是否最小,如果最小保存即可,如果相等直接忽略,因为我们是从头开始枚举的,保证了每次保存的小标一定是最小的那个
如何是否在同一条直线上:
- X坐标相同
- Y坐标相同
满足上述任意一个条件都可以
代码
#define MIN(a, b) ((a) < (b) ? (a) : (b))
int nearestValidPoint(int x, int y, int** points, int pointsSize, int* pointsColSize){
int min = INT_MAX;
int index = -1;
for (int i = 0; i < pointsSize; ++i) {//枚举所有元素
if (points[i][0] == x || points[i][1] == y) {//判断是否在同一直线
if (min > abs(x - points[i][0]) + abs(y - points[i][1])) {//求曼哈顿距离并判断是否最小
min = abs(x - points[i][0]) + abs(y - points[i][1]);
index = i;
}
}
}
return index;
}
作者:小迅
链接:https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/solutions/2000176/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-k1yt/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。