Leetcode 1401.圆和矩形是否有重叠(Circle and Rectangle Overlapping)

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

1 题目描述(Leetcode题目链接

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

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

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

在这里插入图片描述

输入:radius = 1, x_center = 0, y_center = 0, x1 = 1, y1 = -1, x2 = 3, y2 = 1
输出:true
解释:圆和矩形有公共点 (1,0)

提示:

  • 1 < = r a d i u s < = 2000 1 <= radius <= 2000 1<=radius<=2000
  • − 1 0 4 < = x c e n t e r , y c e n t e r , x 1 , y 1 , x 2 , y 2 < = 1 0 4 -10^4 <= x_center, y_center, x1, y1, x2, y2 <= 10^4 104<=xcenter,ycenter,x1,y1,x2,y2<=104
  • x 1 < x 2 x1 < x2 x1<x2
  • y 1 < y 2 y1 < y2 y1<y2

2 题解

  参考

class Solution:
    def checkOverlap(self, radius: int, x_center: int, y_center: int, x1: int, y1: int, x2: int, y2: int) -> bool:
        v = (abs(x_center - (x1 + x2)/2), abs(y_center - (y1 + y2)/2))
        h = ((x2 - x1)/2, (y2 - y1)/2)
        u = (max(0, v[0] - h[0]), max(0, v[1] - h[1]))
        return u[0]**2 + u[1]**2 <= radius**2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值