前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点

LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点

作者头像
Michael阿明
发布2021-09-06 10:09:46
9870
发布2021-09-06 10:09:46
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. 题目

给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。 同时,在同一个坐标系下给你一个数组 points ,其中 points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。 当一个点与你所在的位置有相同的 x 坐标 或者 相同的 y 坐标时,我们称这个点是 有效的

请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。 如果有多个最近的有效点,请返回下标 最小 的一个。 如果没有有效点,请返回 -1 。

两个点 (x1, y1) 和 (x2, y2) 之间的 曼哈顿距离 为 abs(x1 - x2) + abs(y1 - y2)

代码语言:javascript
复制
示例 1:
输入:x = 3, y = 4, points = [[1,2],[3,1],[2,4],[2,3],[4,4]]
输出:2
解释:所有点中,[3,1],[2,4] 和 [4,4] 是有效点。
有效点中,[2,4] 和 [4,4] 距离你当前位置的曼哈顿距离最小,都为 1 。
[2,4] 的下标最小,所以返回 2 。

示例 2:
输入:x = 3, y = 4, points = [[3,4]]
输出:0
提示:答案可以与你当前所在位置坐标相同。

示例 3:
输入:x = 3, y = 4, points = [[2,3]]
输出:-1
解释:没有有效点。
 
提示:
1 <= points.length <= 10^4
points[i].length == 2
1 <= x, y, ai, bi <= 10^4

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 按题意模拟
代码语言:javascript
复制
class Solution {
public:
    int nearestValidPoint(int x, int y, vector<vector<int>>& points) {
        int dis = INT_MAX, d, ans = -1;
        for(int i = 0; i < points.size(); ++i)
        {
            if((x==points[i][0] || y==points[i][1]) && (d = abs(points[i][0]-x)+abs(points[i][1]-y)) < dis)
            {	// 坐标有相同的,且距离更小
                dis = d;
                ans = i;
            }
        }
        return ans;
    }
};

200 ms 57.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档