【leetcode】【2023/6/25】1401. 圆和矩形是否有重叠

这篇具有很好参考价值的文章主要介绍了【leetcode】【2023/6/25】1401. 圆和矩形是否有重叠。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:

  • 给定一个圆和一个平行于坐标轴的矩形,判断两者是否重叠。
    • 圆的中心为 ( x c , y c ) (xc,yc) (xc,yc),半径为 r r r
    • 矩形左下角点为 ( x 1 , y 1 ) (x1, y1) (x1,y1),右上角点为 ( x 2 , y 2 ) (x2, y2) (x2,y2)

解题思路:

  • 数学题。
  • 圆内(包括圆边上)定义了点集:
    { ( x , y ) : ( x − x c ) 2 + ( y − y c ) 2 ≤ r 2 } \{(x,y):(x-xc)^2+(y-yc)^2 \leq r^2\} {(x,y):(xxc)2+(yyc)2r2}
  • 矩形内(包括矩形边上)定义了点集:
    { ( x , y ) : x 1 ≤ x ≤ x 2 , y 1 ≤ y ≤ y 2 } \{(x,y):x1\leq x\leq x2,y1\leq y \leq y2\} {(x,y):x1xx2,y1yy2}
  • 解题思路就是求得圆心到矩形的最短距离 d d d,判断 d d d r r r 的关系,可能出现的情况如下:
    1. 假若 x 1 ≤ x ≤ x 2 x1\leq x\leq x2 x1xx2 y 1 ≤ y ≤ y 2 y1\leq y \leq y2 y1yy2,则此时圆心在矩形内,即 d = 0 d=0 d=0
    2. 假若 x 1 ≤ x c ≤ x 2 x1\leq xc\leq x2 x1xcx2 或者 y 1 ≤ y c ≤ y 2 y1\leq yc \leq y2 y1ycy2,则圆心与矩形最近点的连线平行于坐标轴,则此时 d = min ⁡ ( ∣ x c − x 1 ∣ , ∣ x c − x 2 ∣ ) d = \min(|xc - x1|,|xc-x2|) d=min(xcx1∣,xcx2∣) 或者 d = min ⁡ ( ∣ y c − y 1 ∣ , ∣ y c − y 2 ∣ ) d = \min(|yc - y1|,|yc-y2|) d=min(ycy1∣,ycy2∣)
    3. 其余情况下,其实就是求圆心到矩形四个端点的最近距离,此时:
      d = min ⁡ ( ( x c − x 1 ) 2 , ( x c − x 2 ) 2 ) + min ⁡ ( ( y c − y 1 ) 2 , ( y c − y 2 ) 2 ) d = \sqrt{\min((xc - x1)^2,(xc-x2)^2)+\min((yc - y1)^2,(yc-y2)^2)} d=min((xcx1)2,(xcx2)2)+min((ycy1)2,(ycy2)2)

代码实现:

class Solution {
public:
    bool checkOverlap(int radius, int xc, int yc, int x1, int y1, int x2, int y2) {
        long long dist = xc<x1 or xc>x2 ? min(pow(x1-xc,2),pow(x2-xc,2)):0;
        dist += yc<y1 or yc>y2 ? min(pow(y1-yc,2),pow(y2-yc,2)) : 0;
        return dist <= radius*radius;
    }
};

文章来源地址https://www.toymoban.com/news/detail-501212.html

到了这里,关于【leetcode】【2023/6/25】1401. 圆和矩形是否有重叠的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023-05-17 LeetCode每日一题(判断两个事件是否存在冲突)

    点击跳转到题目位置 给你两个字符串数组 event1 和 event2 ,表示发生在同一天的两个闭区间时间段事件,其中: event1 = [startTime1, endTime1] 且 event2 = [startTime2, endTime2] 事件的时间为有效的 24 小时制且按 HH:MM 格式给出。 当两个事件存在某个非空的交集时(即,某些时刻是两个事

    2024年02月05日
    浏览(42)
  • Leetcode每日一题:1448. 统计二叉树中好节点的数目(2023.8.25 C++)

    目录 1448. 统计二叉树中好节点的数目 题目描述: 实现代码与解析: dfs 原理思路:         给你一棵根为  root  的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 示例 2: 示例

    2024年02月11日
    浏览(30)
  • 2023-08-20 LeetCode每日一题(判断根结点是否等于子结点之和)

    点击跳转到题目位置 给你一个 二叉树 的根结点 root,该二叉树由恰好 3 个结点组成:根结点、左子结点和右子结点。 如果根结点值等于两个子结点值之和,返回 true ,否则返回 false 。 示例 1: 示例 2: 提示: 树只包含根结点、左子结点和右子结点 -100 = Node.val = 100 (1) 直接

    2024年02月12日
    浏览(35)
  • 看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题242有效的字母异位词) 2023.4.25

    本文章一部分内容参考于《代码随想录》----如有侵权请联系作者删除即可,撰写本文章主要目的在于记录自己学习体会并分享给大家,全篇并不仅仅是复制粘贴,更多的是加入了自己的思考,希望读完此篇文章能真正帮助到您!!! 力扣题目链接 分析题目: 什么叫做字母异

    2024年02月06日
    浏览(34)
  • Allegro如何检查过孔是否重叠的四种方法操作指导

    Allegro如何检查过孔是否重叠的四种方法操作指导 Allegro可以检查过孔是否重叠,避免重孔的情况的出现,具体检查方法如下 一.非同名网络过孔重叠 以下图为例 打开DRC开关,EnableDRC 打开Constraints-Mode 打开Spacing规则via的规则 可以看到非同名网络过孔,孔重叠在一起的情况以

    2023年04月25日
    浏览(39)
  • 【工程应用九】再谈基于离散夹角余弦相似度指标的形状匹配优化(十六角度量化+指令集加速+目标只有部分在图像内的识别+最小外接矩形识别重叠等)

    继去年上半年一鼓作气研究了几种不同的模版匹配算法后,这个方面的工作基本停滞了有七八个月没有去碰了,因为感觉已经遇到了瓶颈,无论是速度还是效率方面,以当时的理解感觉都到了顶了。年初,公司业务惨淡,也无心向佛,总要找点事情做一做,充实下自己,这里

    2024年03月19日
    浏览(37)
  • 【LeetCode】1031. 两个非重叠子数组的最大和

      给你一个整数数组  nums  和两个整数  firstLen  和  secondLen ,请你找出并返回两个非重叠  子数组  中元素的最大和 , 长度分别为  firstLen  和  secondLen  。 长度为  firstLen  的子数组可以出现在长为  secondLen  的子数组之前或之后,但二者必须是不重叠的。 子数组是数

    2024年02月01日
    浏览(23)
  • 判断任意一点是否在矩形内(矩形可能与坐标轴有一定夹角)

    问题 如何判断点 P P P 是否在被 P 1 P 2 P 3 P 4 P_1P_2P_3P_4 P 1 ​ P 2 ​ P 3 ​ P 4 ​ 四个点围成的矩形框内? 方法 如果在矩形内:点 P P P 与矩形4个角的连线与任意轴形成的夹角都为锐角。可以用向量的点乘判断角度是否为锐角。具体方法如下图所示。 所以可以通过下列公式判断

    2024年02月09日
    浏览(30)
  • 判断两个矩形是否相交(Rect Intersection)

    最近在开发一个2D组态图形组件的过程中,里面的数学模块,涉及到两个矩形是否相交的判断。 这个问题很多年前就写过,算是个小的算法吧。 网络上搜索一下,有很多思路,有一些思路要基于多种组合的判断,显得比较复杂。 比如两个矩形相交的情形,可能有下面的多种

    2024年02月08日
    浏览(40)
  • hive udf 判断四边形是否为矩形

    hive udf中经常要做判断四边形是否为矩形,所以写了这个udf如下:

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包