力扣1401. 圆和矩形是否有重叠

用矢量计算:

cpp 复制代码
class Solution {
public:
    bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {
        //矩形中心
        float Tx=(float)(x1+x2)/2;
        float Ty=(float)(y1+y2)/2;
        //强行进行对称操作,只考虑第一象限
        if(xCenter<Tx){
            xCenter=2*Tx-xCenter;
        }
        if(yCenter<Ty){
            yCenter=2*Ty-yCenter;
        }
        //圆心到对角顶点的距离
        int rDTx=xCenter-x2;
        int rDTy=yCenter-y2;
        //四种情况
        if(rDTx>0&&rDTy>0){
            return rDTx*rDTx+rDTy*rDTy<=radius*radius;
        }
        else if(rDTx<=0&&rDTy>0){
            return rDTy<=radius;
        }
        else if(rDTy<=0&&rDTx>0){
            return rDTx<=radius;
        }
        else if(rDTx<=0&&rDTy<=0){
            return true;
        }
        return false;
    }
};
相关推荐
索迪迈科技17 小时前
算法题(203):矩阵最小路径和
线性代数·算法·矩阵
默默无名的大学生17 小时前
数据结构——链表的基本操作
数据结构·算法
Neverfadeaway17 小时前
C语言————冒泡排序(例题2)
c语言·数据结构·算法·冒泡排序·升序排列·降序排列
惊鸿.Jh18 小时前
1733. 需要教语言的最少人数
算法·leetcode
大千AI助手18 小时前
SPEA2多目标进化算法:理论与应用全解析
算法·多目标优化·种群·spea2·mop·moea·帕累托最优
AndrewHZ19 小时前
【图像处理基石】图像处理中的边缘检测算法及应用场景
图像处理·算法·计算机视觉·cv·算子·边缘检测
熊文豪19 小时前
【华为OD】区块链文件转储系统
算法·华为od·区块链
塔中妖19 小时前
【华为OD】Linux发行版的数量
linux·算法·华为od
熊文豪19 小时前
【华为OD】阿里巴巴找黄金宝箱
算法·华为od
bestadc19 小时前
LeetCode 几道 Promises 和 Time 的题目
javascript·算法·leetcode