LeetCode 1401. 圆和矩形是否有重叠

题目描述

1401. 圆和矩形是否有重叠

思路分析

解法一:几何最近点(推荐)

核心思路

  • 计算圆心到矩形的最近点 (cx, cy),通过坐标截断实现。
  • 若圆心到该点距离平方 <= r^2,则圆与矩形相交。


复杂度分析

  • 时间复杂度:O(1)。
  • 空间复杂度:O(1)。
class Solution {
    public boolean checkOverlap(int radius, int xCenter, int yCenter,
                                int x1, int y1, int x2, int y2) {
        int cx = clamp(xCenter, x1, x2);
        int cy = clamp(yCenter, y1, y2);

        int dx = xCenter - cx;
        int dy = yCenter - cy;
        return dx * dx + dy * dy <= radius * radius;
    }

    private int clamp(int v, int lo, int hi) {
        if (v < lo) {
            return lo;
        }
        if (v > hi) {
            return hi;
        }
        return v;
    }
}
func checkOverlap(radius int, xCenter int, yCenter int, x1 int, y1 int, x2 int, y2 int) bool {
    cx := clamp(xCenter, x1, x2)
    cy := clamp(yCenter, y1, y2)

    dx := xCenter - cx
    dy := yCenter - cy
    return dx*dx+dy*dy <= radius*radius
}

func clamp(v, lo, hi int) int {
    if v < lo {
        return lo
    }
    if v > hi {
        return hi
    }
    return v
}

相似题目

题目 难度 考察点
812. 最大三角形面积 简单 几何
223. 矩形面积 中等 几何
587. 安装栅栏 困难 凸包
149. 直线上最多的点数 困难 几何
1232. 缀点成线 简单 几何
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/84964033
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!