文章目录

  • 1. 题目
  • 2. 解题

1. 题目

在一个二维平面空间中,给你 n 个点的坐标。
问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布?

示例 1:
输入: [[1,1],[-1,1]]
输出: true示例 2:
输入: [[1,1],[-1,-1]]
输出: false
拓展:
你能找到比 O(n^2) 更优的解法吗?

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/line-reflection
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 按x排序,相同,则按y排序,去重
  • 前半部分在x基础上按y降序,方便双指针比较
  • 还要考虑都在一条直线上也是可以的
class Solution {public:bool isReflected(vector<vector<int>>& points) {sort(points.begin(), points.end(),[&](auto a, auto b){if(a[0] == b[0])return a[1] < b[1];//y大的靠后return a[0] < b[0];//按x坐标排序});if(points[0][0] == points[points.size() - 1][0])//x都相等,在一条线上,truereturn true;points.erase(unique(points.begin(), points.end()), points.end());//有重复的点int half = points.size()/2;sort(points.begin(), points.begin()+half, [&](auto a, auto b){if(a[0] == b[0])return a[1] > b[1];//前半部分y大的靠前return a[0] < b[0];//按x坐标排序});int l = 0, r = points.size()-1;if(points[l][1] != points[r][1]) return false;int xmid = points[l++][0] + points[r--][0];//中心的两倍while(l < r){if(points[l][0] != points[r][0] && (points[l][1] != points[r][1] || points[l][0] + points[r][0] != xmid)) return false;l++,r--;}return points[l][0] + points[r][0] == xmid;}
};// [[1,1],[0,1],[-1,1],[0,0]]
// [[1,2],[2,2],[1,4],[2,4]]
// [[-16,1],[16,1],[16,1]]
// [[1,1],[-1,1]]
// [[0,0],[0,-1]]
// [[0,0],[1,0],[3,0]]

参考大力王的简洁写法:

class Solution {public:bool isReflected(vector<vector<int>>& points) {int left = INT_MAX, right = INT_MIN;for(auto& p : points){left = min(p[0], left);right = max(p[0], right);}int xmid = left + right;set<vector<int>> s(points.begin(), points.end());for(auto& p : points)if (s.find({xmid-p[0], p[1]}) == s.end())return false;return true;}
};

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

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

LeetCode 356. 直线镜像相关推荐

  1. leetcode:356. 直线对称

    题目解析 leetcode:356. 直线对称 题目描述 在一个二维平面空间中,给你 n 个点的坐标. 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? class Solut ...

  2. LeetCode 149 直线上最多的点数

    一.题目介绍 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | |        o | ...

  3. leetcode 149. 直线上最多的点数

    题目 给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点.求最多有多少个点在同一条直线上. 示例 1: 输入:points = [[1,1],[ ...

  4. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  5. 【Leetcode】精选算法top200道(二)

    二.中等 339.嵌套列表权重和 给定一个嵌套的整数列表 nestedList ,每个元素要么是整数,要么是列表.同时,列表中元素同样也可以是整数或者是另一个列表. 整数的 深度 是其在列表内部的嵌套 ...

  6. leetcode刷题目录总结

    题目 题目 技巧 相似的题目 其他 1. 无序数组中找出目标为target的两个数 先定义下一个数,然后找两位的数是否存在 高频, 大厂刷题班, 第27节 2.逆序链表两数相加 链表.各位加法 高频, ...

  7. LeetCode MySQL解题目录

    已完成的 LeetCode MySQL 数据库题目.点击查看我的 LeetCode 算法解题目录. 已解决 123/123 - 简单 54 中等 51 困难 18 前置入门学习 MySQL 基本查询. ...

  8. 结构建模设计——Solidworks软件之草图镜像阵列功能总结及进阶绘制小挖土机草图实战

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <从0到1学习嵌入式Linux开发> <A ...

  9. LeetCode1-620题汇总,希望对你有点帮助!

    时间很快,公众号发布的LeetCode题目,已经达到620道题了.今天把发布的1-620篇LeetCode文章整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于算法感兴趣的, ...

最新文章

  1. java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。
  2. Topcoder SRM570 900 CurvyonRails
  3. 《iOS 全埋点技术白皮书》重磅推出
  4. 谈谈你对php的收获和不足,我的收获与不足
  5. [html] 你是如何理解html与css分离的?
  6. Win7_刻录DVD
  7. 学习vim的正确姿势!
  8. 完美解决Python与anaconda之间的冲突问题,你值得拥有
  9. Android 在popupWindow上用autoCompleteTextView报错(Android 6.0报错,8.0没有问题)
  10. LG显示将在坡州工厂为iPhone 14 Pro Max生产120Hz刷新率屏幕
  11. 2011年度最佳开源软件:Bossie奖结果公布
  12. 简述台式计算机组装的基本步骤,《计算机组装与维修》期中考试试卷答案
  13. 使用alarm API实现灵活的延时操作
  14. Easy Code,IntelliJ IDEA中代码一键生成
  15. [Redis]Redis的数据类型
  16. ipad air1 12.5.5 checkra1n 越狱+绕过ID
  17. luma3ds7.1按start键开机无法启动payload解决
  18. ORACLE 中通过证件号码获取性别
  19. swagger常用注解汇总
  20. LED透明屏为什么能透明?实现原理

热门文章

  1. python 重载的实现(single-dispatch generic function)
  2. virtual析构函数的作用?
  3. iconsvg image怎么变为path_昆凌是怎么收服天王周杰伦的?这几招太高明了
  4. 嵌入式Linux系统的构成和启动总结
  5. wangeditor html编辑,Vue整合wangEditor富文本编辑器
  6. iOS 打包.framework(包括第三方、图片、xib、plist文件)详细步骤及需要注意的地方...
  7. STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法
  8. python__实参前加*和**的(拆包)功能
  9. UVA - 11246 - K-Multiple Free set(容斥原理)
  10. C#快速导入海量XML数据至SQL Server数据库