博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Line Reflection 直线对称
阅读量:6235 次
发布时间:2019-06-22

本文共 1699 字,大约阅读时间需要 5 分钟。

 

Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the given set of points.

Example 1:

Given points = [[1,1],[-1,1]], return true.

Example 2:

Given points = [[1,1],[-1,-1]], return false.

Follow up:

Could you do better than O(n2)?

Hint:

  1. Find the smallest and largest x-value for all points.
  2. If there is a line then it should be at y = (minX + maxX) / 2.
  3. For each point, make sure that it has a reflected point in the opposite side.

Credits:

Special thanks to for adding this problem and creating all test cases.

 

这道题给了我们一堆点,问我们存不存在一条平行于y轴的直线,使得所有的点关于该直线对称。题目中的提示给的相当充分,我们只要按照提示的步骤来做就可以解题了。首先我们找到所有点的横坐标的最大值和最小值,那么二者的平均值就是中间直线的横坐标,然后我们遍历每个点,如果都能找到直线对称的另一个点,则返回true,反之返回false,参见代码如下:

 

解法一:

class Solution {public:    bool isReflected(vector
>& points) { unordered_map
> m; int mx = INT_MIN, mn = INT_MAX; for (auto a : points) { mx = max(mx, a.first); mn = min(mn, a.first); m[a.first].insert(a.second); } double y = (double)(mx + mn) / 2; for (auto a : points) { int t = 2 * y - a.first; if (!m.count(t) || !m[t].count(a.second)) { return false; } } return true; }};

 

下面这种解法没有求最大值和最小值,而是把所有的横坐标累加起来,然后求平均数,基本思路都相同,参见代码如下:

 

解法二:

class Solution {public:    bool isReflected(vector
>& points) { if (points.empty()) return true; set
> pts; double y = 0; for (auto a : points) { pts.insert(a); y += a.first; } y /= points.size(); for (auto a : pts) { if (!pts.count({y * 2 - a.first, a.second})) { return false; } } return true; }};

 

类似题目:

 

参考资料:

 

转载地址:http://keqna.baihongyu.com/

你可能感兴趣的文章
PHP网站简单架构 – 单独跑php-fpm
查看>>
你所不知道的传输层
查看>>
数据挖掘-关联分析-Apriori算法Java实现 支持度+置信度
查看>>
OSChina 技术周刊第十一期
查看>>
renren-security轻量级权限框架
查看>>
php连接mysql
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
关于 spring 注解驱动编程
查看>>
mysql的checksum
查看>>
Head First Design Pattern 读书笔记(3)装饰者模式
查看>>
Effective Java(1):静态工厂方法代替构造器
查看>>
Linux 监控tomcat,自动重启tomcat服务
查看>>
Android中Bitmap和Drawable
查看>>
Scala学习笔记(3)-数组集合元组
查看>>
eclipse反编译插件
查看>>
ssh js
查看>>
commons-fileupload上传附件api使用
查看>>
HBase性能调优
查看>>
ORACLE 中上下文 sys_context的创建及应用
查看>>
floyd算法学习
查看>>