LeetCode223-矩形面积-数学-几何

原题链接
在这里插入图片描述

Note:

容斥原理,算出来两个并减去交

一维上来看 A B C D四个点, AB是一段 CD是一段

那么他们的交集部分可以看做是
min(尾结点) - max (头结点)

如果两个是不想交的,那么就是这个算出来就是个负数,这样我们直接跟0取个max就可以覆盖左右的情况了

二维的情况上来看的话,就是横坐标找一次,纵坐标找一次,就可以计算重叠部分的面积了,算出来总面积,减掉重叠部分的面积,就可以了

代码如下:
class Solution {
public:
    int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {
        int x = max(0, min(ax2, bx2) - max(ax1, bx1));
        int y = max(0, min(ay2, by2) - max(ay1, by1));
        return (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1) - x * y;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值