题目解析

  • leetcode:356. 直线对称

题目描述

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

class Solution  {public:bool isReflected(vector<pair<int, int>>& points){}
};

题目解析

思路一(但是没有保证没有重复的点,如果出现重复的点没有关系,对应map的value只插一个)

思路

  • 先找到所有点的横坐标的最大值和最小值,那么二者的均值就是中间直线的横坐标
  • 然后遍历每个点,如果都能找到直线对称的另一个点,则返回true,否则返回false
class Solution  {public:bool isReflected(vector<pair<int, int>>& points){std::unordered_map<int, std::set<int>> m;int max = INT_MIN, min = INT_MAX;for(auto a : points){max = std::max(max, a.first);min = std::min(min, a.first);m[a.first].insert(a.second);}double  y = (double)(max + min) / 2;for(auto a : points){int t = 2 * y - a.first;  // 求出对称的那个点的x坐标if(!m.count(t) || !m[t].count(a.second)){ // 如果对称的x坐标不存在 || 对称的x指标的y指标和当前坐标不相同return false;}}return true;}
};

思路

  • 下面这种解法没有求最大值和最小值,而是把所有的横坐标累加起来,然后求平均数,基本思路都相同
class Solution  {public:bool isReflected(vector<pair<int, int>>& points){if(points.empty()){return true;}std::set<std::pair<int, int>> 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;}
};

类似题目

  • leetcode:149. 直线上最多的点数 Max Points on a Line
  • leetcode:356. 直线对称 Line Reflection

leetcode:356. 直线对称相关推荐

  1. LeetCode 356. 直线镜像

    文章目录 1. 题目 2. 解题 1. 题目 在一个二维平面空间中,给你 n 个点的坐标. 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? 示例 1: 输入: [[1,1], ...

  2. 求向量的垂线_高考数学填空题如何快速求直线关于直线对称的直线方程

    -a求直线 关于直线 对称的直线 方程 结论 由 整理可得 的方程 下面证明此结论并举例运用 如图,设点 为直线 上任一点,过点 作 和 的垂线,垂足分别是 ,延长 交 于 ,设 是三线的交点, 易知 ...

  3. 刻意练习:LeetCode实战 -- Task20. 对称二叉树

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  4. LeetCode实战:对称二叉树

    题目英文 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). ...

  5. 20190915:(leetcode习题)对称二叉树

    对称二叉树 题目 大致思路 代码实现 题目 大致思路 判断依据很简单:①根节点相同,②③根节点的左(右)子树的值和根节点的右(左)子树的值相同即可,然后递归调用即可. 写的时候注意root为null的 ...

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

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

  7. [Leetcode总结] 101.对称二叉树

    给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1/ \2 2/ \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3 ...

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

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

  9. leetcode算法题--对称的二叉树

    原题链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/ bool isSymmetric(TreeNode* root) ...

最新文章

  1. QIIME 2教程. 20实用程序Utilities(2021.2)
  2. 新书上市 | 《复分析:可视化方法》
  3. Docker(一):Docker的安装与常用命令
  4. python 关键字大全_一日一技:用实例列举python中所有的关键字(01)
  5. wget连接指定端口_新技能:wget参数有用过吗?
  6. 压缩包加密后门_加密后门:还有更多争论吗?
  7. Java 条件运算符?:
  8. android中src和background区别
  9. Rust : wasm尝试 与wasmtime库
  10. 佳能g3800编程器固件_佳能g3800清零软件 佳能g3800打印机废墨清零
  11. 联想Lenovo——何去何从
  12. win10计算机 需要新应用,win10 计算器提示:需要新应用打开此calculator
  13. C编程 求1到100之间的奇偶数之和
  14. nginx教程(一)--nginx是什么?能干什么?
  15. 梯度下降法,二维空间三维空间 代码实现
  16. python灰帽子学习感想
  17. 人生是条河,深浅都要过
  18. java ncso发送电邮_如何在Windows中从命令行发送电子邮件(无需额外的软件)
  19. 《Excel视频6》数值、left/right/mid/find
  20. 编译android工程提示error processing kotlin-stdlib-1.6.0.jar

热门文章

  1. html web前端基础(1)
  2. 第五篇《三只小猪——后篇》
  3. litepoint python SCPI通信
  4. 宝塔的防火墙是什么?有什么作用呢?
  5. 诸神之战!!奖金 ¥230,0000,寻找最强开发者!
  6. Linux终端连接redis数据库【重点】
  7. 苹果手机资料丢失怎么办
  8. 论文解读:PromptBERT: Improving BERT Sentence Embeddings with Prompts
  9. 【算法】【动态规划】【四边形不等式】画匠问题(附带问题类型总结)
  10. 再见,堡垒之夜!Epic Games 的 App Store 账号被正式移除!