【每日一题Day247】LC1401圆和矩形是否有重叠 | 数学

简介: 【每日一题Day247】LC1401圆和矩形是否有重叠 | 数学

圆和矩形是否有重叠【LC1401】

给你一个以 (radius, xCenter, yCenter) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2) ,其中 (x1, y1) 是矩形左下角的坐标,而 (x2, y2) 是右上角的坐标。

如果圆和矩形有重叠的部分,请你返回 true ,否则返回 false

换句话说,请你检测是否 存在(xi, yi) ,它既在圆上也在矩形上(两者都包括点落在边界上的情况)。

  • 思路
    题意可以转化为矩形区域内有点在圆形区域中,如果一个点在圆形内,那么其至圆心的距离小于等于半径。那么我们可以找到横坐标的平方+纵坐标的平方到圆心的距离最小值对应的点,如果其在圆内,那么表示圆和矩形有相交区域
  • 实现
class Solution {
    public boolean checkOverlap(
        int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
        int a = f(x1, x2, xCenter);
        int b = f(y1, y2, yCenter);
        return a * a + b * b <= radius * radius;
    }
    private int f(int i, int j, int k) {
        if (i <= k && k <= j) {
            return 0;
        }
        return k < i ? i - k : k - j;
    }
}
作者:ylb
链接:https://leetcode.cn/problems/circle-and-rectangle-overlapping/solutions/2319357/python3javacgotypescript-yi-ti-yi-jie-sh-vpsu/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

复杂度

  • 时间复杂度:O(1)
  • 空间复杂度:O(1)
目录
相关文章
|
6月前
|
C语言
C语言---计算三角形的周长和面积--海伦公式
C语言---计算三角形的周长和面积--海伦公式
|
6月前
|
算法 Python
二维矩形件排样算法之最低水平线搜索算法实现
二维矩形件排样算法之最低水平线搜索算法实现
198 0
|
7月前
|
JavaScript
【leetcode】221--最大正方形-动态规划法
【leetcode】221--最大正方形-动态规划法
35 0
|
7月前
|
算法 测试技术 C#
【数学】【计算几何】1453. 圆形靶内的最大飞镖数量
【数学】【计算几何】1453. 圆形靶内的最大飞镖数量
|
C语言
C语言:已知三角形三边长,计算面积 —— 海伦公式
C语言:已知三角形三边长,计算面积 —— 海伦公式
|
算法
秒懂算法 | 计算几何:圆
计算几何的基础是点积和叉积,它们定义了向量的大小和方向的关系,是其他计算几何概念和算法的出发点。在点积和叉积的基础上,本篇重点介绍圆覆盖。 计算几何题目的代码大多繁琐冗长,因此掌握模板代码是学习计算几何的关键。本篇精心组织了经典的几何模板
18139 1
秒懂算法 | 计算几何:圆
|
算法 Java
Java计算四边形中心点和两条线段交点算法
Java计算四边形中心点和两条线段交点算法
176 0
Java计算四边形中心点和两条线段交点算法
【每日一题Day50】LC1812判断国际象棋棋盘中一个格子的颜色 | 找规律
【每日一题Day50】LC1812判断国际象棋棋盘中一个格子的颜色 | 找规律
83 0
【每日一题Day52】LC1691堆叠长方体的最大高度 | 贪心 + dp
实现:先将每个长方体的三边从小到大排序,然后将每个长方体根据最长边从大到小排序,然后使用动态规划查找以第i个长方体为顶层的最大高度,最后使用变量记录最大高度
75 0
AcWing 604. 圆的面积
AcWing 604. 圆的面积
83 0
AcWing 604. 圆的面积