ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

A.每日一题:1401. 圆和矩形是否有重叠

A.每日一题:1401. 圆和矩形是否有重叠 题目链接1401. 圆和矩形是否有重叠中等算法原理解法找距离圆心最近的点时间复杂度O(1)0ms击败100.00%题目给的提示找到正方形上距离圆心最近的点计算该点到圆心的距离并判断其是否小于等于半径我们要做的两件事①找到在矩形中到圆心xCenter,yCenter最近的点x,y②勾股定理判断点x,y是否在圆中其中x1≤x≤x2y1≤y≤y2勾股定理得到d²x-xCenter²y-yCenter²为了最小化上述的值我们需要让x,y尽可能的接近圆心xCenter,yCenter对于x当x1≤xCenter≤x2时圆心在正方形内xxCenter当xCenter≤x1时圆心在正方形左侧xx1当x2≤xCenter时圆心在正方形右侧xx2我们可以用一句话总结上述情况xCenter与x2取最小值xCenter与x1取最大值用公式表示为xmax(x1,min(xCenter,x2))对于y同理ymax(y1,min(yCenter,y2))最后返回 x-xCenter²y-yCenter² ≤ radius² 即可Java代码class Solution { //1401. 圆和矩形是否有重叠 public boolean checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) { //找到在矩形中的到圆心xCenter,yCenter最近的点x,y int xMath.max(x1,Math.min(xCenter,x2)); int yMath.max(y1,Math.min(yCenter,y2)); //判断x,y是否在圆中 return (x-xCenter)*(x-xCenter)(y-yCenter)*(y-yCenter)radius*radius; } }
返回列表