leetcode:356. 直线对称
题目解析
- 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. 直线对称相关推荐
- LeetCode 356. 直线镜像
文章目录 1. 题目 2. 解题 1. 题目 在一个二维平面空间中,给你 n 个点的坐标. 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? 示例 1: 输入: [[1,1], ...
- 求向量的垂线_高考数学填空题如何快速求直线关于直线对称的直线方程
-a求直线 关于直线 对称的直线 方程 结论 由 整理可得 的方程 下面证明此结论并举例运用 如图,设点 为直线 上任一点,过点 作 和 的垂线,垂足分别是 ,延长 交 于 ,设 是三线的交点, 易知 ...
- 刻意练习:LeetCode实战 -- Task20. 对称二叉树
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- LeetCode实战:对称二叉树
题目英文 Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). ...
- 20190915:(leetcode习题)对称二叉树
对称二叉树 题目 大致思路 代码实现 题目 大致思路 判断依据很简单:①根节点相同,②③根节点的左(右)子树的值和根节点的右(左)子树的值相同即可,然后递归调用即可. 写的时候注意root为null的 ...
- LeetCode 149 直线上最多的点数
一.题目介绍 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | ...
- [Leetcode总结] 101.对称二叉树
给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1/ \2 2/ \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3 ...
- leetcode 149. 直线上最多的点数
题目 给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点.求最多有多少个点在同一条直线上. 示例 1: 输入:points = [[1,1],[ ...
- leetcode算法题--对称的二叉树
原题链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/ bool isSymmetric(TreeNode* root) ...
最新文章
- QIIME 2教程. 20实用程序Utilities(2021.2)
- 新书上市 | 《复分析:可视化方法》
- Docker(一):Docker的安装与常用命令
- python 关键字大全_一日一技:用实例列举python中所有的关键字(01)
- wget连接指定端口_新技能:wget参数有用过吗?
- 压缩包加密后门_加密后门:还有更多争论吗?
- Java 条件运算符?:
- android中src和background区别
- Rust : wasm尝试 与wasmtime库
- 佳能g3800编程器固件_佳能g3800清零软件 佳能g3800打印机废墨清零
- 联想Lenovo——何去何从
- win10计算机 需要新应用,win10 计算器提示:需要新应用打开此calculator
- C编程 求1到100之间的奇偶数之和
- nginx教程(一)--nginx是什么?能干什么?
- 梯度下降法,二维空间三维空间 代码实现
- python灰帽子学习感想
- 人生是条河,深浅都要过
- java ncso发送电邮_如何在Windows中从命令行发送电子邮件(无需额外的软件)
- 《Excel视频6》数值、left/right/mid/find
- 编译android工程提示error processing kotlin-stdlib-1.6.0.jar