836. Rectangle Overlap

本文介绍了一种简洁高效的矩形重叠判断算法。通过比较两个矩形的左右上下边界来快速判断它们是否存在交集。该算法适用于各种需要判断矩形重叠的应用场景。

问题描述:给你两个各包含四个数字的数组。每个数组前两个数字表示长方形左下角的坐标。后两个数字代表右上角坐标。判断这两个矩形是否相交。
原答案:

    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        if(rec2[0]>=rec1[0]&&rec1[2]>rec2[0])
            if(rec2[1]>=rec1[1]&&rec1[3]>rec2[1])
                return true;
        if(rec2[2]>rec1[0]&&rec1[2]>=rec2[2])
            if(rec2[3]>rec1[1]&&rec1[3]>=rec2[1])
                return true;
        if(rec1[0]>=rec2[0]&&rec2[2]>rec1[0])
            if(rec1[1]>=rec2[1]&&rec2[3]>rec1[1])
                return true;
        if(rec1[2]>rec2[0]&&rec2[2]>=rec1[2])
            if(rec1[3]>rec2[1]&&rec2[3]>=rec1[1])
                return true;
        return false;
    }

最佳答案:

    public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
        return rec1[2] > rec2[0] && // left
            rec1[3] > rec2[1] && // bottom
            rec1[0] < rec2[2] && // right
            rec1[1] < rec2[3]; // top
    }

不得不说这答案还真是简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值