leetcode 1401. 圆和矩形是否有重叠 中等

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

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

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

示例 1 :

复制代码
输入:radius = 1, xCenter = 0, yCenter = 0, x1 = 1, y1 = -1, x2 = 3, y2 = 1
输出:true
解释:圆和矩形存在公共点 (1,0) 。

示例 2 :

复制代码
输入:radius = 1, xCenter = 1, yCenter = 1, x1 = 1, y1 = -3, x2 = 2, y2 = -1
输出:false

示例 3 :

复制代码
输入:radius = 1, xCenter = 0, yCenter = 0, x1 = -1, y1 = 0, x2 = 0, y2 = 1
输出:true

提示:

  • 1 <= radius <= 2000
  • -10^4 <= xCenter, yCenter <= 10^4
  • -10^4 <= x1 < x2 <= 10^4
  • -10^4 <= y1 < y2 <= 10^4

分析:分类讨论。判断圆与矩形的四条边是否有相交,再判断圆是否与矩形的四个角有重叠部分。

cpp 复制代码
bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
    if(yCenter+radius<y1||yCenter-radius>y2||xCenter+radius<x1||xCenter-radius>x2)return false;
    if((xCenter<=x1&&yCenter<=y1)&&radius*radius<(x1-xCenter)*(x1-xCenter)+(y1-yCenter)*(y1-yCenter))return false;
    if((xCenter>=x2&&yCenter>=y2)&&radius*radius<(x2-xCenter)*(x2-xCenter)+(y2-yCenter)*(y2-yCenter))return false;
    if((xCenter<=x1&&yCenter>=y2)&&radius*radius<(x1-xCenter)*(x1-xCenter)+(y2-yCenter)*(y2-yCenter))return false;
    if((xCenter>=x2&&yCenter<=y1)&&radius*radius<(x2-xCenter)*(x2-xCenter)+(y1-yCenter)*(y1-yCenter))return false;
    return true;
}
相关推荐
夏幻灵1 小时前
每日一题:LeetCode 206:反转链表——三指针与原地反转详解
算法·leetcode·链表
Tisfy5 小时前
LeetCode 0301.删除无效的括号:二进制枚举 / 回溯
算法·leetcode·字符串·题解·回溯·括号匹配·二进制枚举
Nil2085 小时前
leetcode 322零钱兑换
算法·leetcode·职场和发展
yi0115 小时前
DAY24: LeetCode 167:两数之和 II|从暴力枚举到左右双指针
笔记·python·算法·leetcode·二分查找·双指针
木井巳5 小时前
【BFS 解决拓扑排序】课程表
java·算法·leetcode·广度优先·宽度优先·推荐算法·图搜索算法
yi0116 小时前
LeetCode 15:三数之和|排序 + 双指针,如何避免重复答案?
笔记·python·算法·leetcode·双指针
alphaTao6 小时前
LeetCode 每日一题 2026/10/5-2026/10/11
算法·leetcode
longlongzihan8 小时前
LeetCode 41. 缺失的第一个正数:从基础解法到原地哈希
c++·算法·leetcode
java_nnnn10 小时前
LeetCode刷题双指针(快乐数+盛最多水的容器)Java
算法·leetcode·职场和发展
yi01118 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表