leetcode 223. Rectangle Area(矩形面积)

在这里插入图片描述

给出两个举行的左下角和右上角的坐标,计算面积的交集(即IOU中的U)。

思路:

union = 面积1 + 面积2 - 交集

面积就是边长 x 边长,边长就是x 之差 和 y 之差。

交集部分就是取左下角中较大的和右上角中较小的组成的区域,但是注意可能两个矩形没有交集,
这个可以根据交集部分的边长<0来判断。

另外,本题求的是Union,其中也用到了交集(intersection),
intersection / union 就是图像的IOU。

public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
    int area1 = (ax2 - ax1) * (ay2 - ay1);
    int area2 = (bx2 - bx1) * (by2 - by1);
    
    int diff_x = Math.min(ax2, bx2) - Math.max(ax1, bx1);
    int diff_y = Math.min(ay2, by2) - Math.max(ay1, by1);
    int inter = 0;
    
    if(diff_x > 0 && diff_y > 0) {
        inter = diff_x * diff_y;
    }
    
    return (area1 + area2 - inter);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值