leetcode 223. Rectangle Area(矩形面积)

leetcode 223. Rectangle Area(矩形面积)_第1张图片

给出两个举行的左下角和右上角的坐标,计算面积的交集(即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);
}

你可能感兴趣的:(leetcode,leetcode,算法)