关闭

LeetCode : 223. Rectangle Area

130人阅读 评论(0) 收藏 举报
分类:

问题描述:

Find the total area covered by two rectilinear rectangles in a 2D plane.

Each rectangle is defined by its bottom left corner and top right corner as shown in the figure.

Rectangle Area

Assume that the total area is never beyond the maximum possible value of int.

分析:题目就是要求两个平面呢两个矩形的面积,包含矩形相交与相离的情况。

相离时很简单,就是两个矩形的面积之和,相交就是两个矩形面积之和减去出相交的面积。

所以,分以下步骤解决:

1.判断是否相交

2.求出相交矩形的面积。

弄清楚如何判断两个矩形是否相交以及相交矩形的左下角及右上角坐标即可

AC代码如下:

 int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) 
    {
        if(!IsInsection( A, B, C, D, E, F, G, H))
            return (C-A)*(D-B)+(G-E)*(H-F);
        else
            return (C-A)*(D-B)+(G-E)*(H-F) - InsectionArea( A, B, C, D, E, F, G, H);
    }
    bool IsInsection(int A, int B, int C, int D, int E, int F, int G, int H)//判断两个矩形是否相交
    {
        if(D < F || C < E || H < B || G < A)
            return false;
        else
            return true;
    }
    int InsectionArea(int A, int B, int C, int D, int E, int F, int G, int H)//相交矩形的面积
    {
        int minx = max(A,E);
        int miny = max(B,F);
        int maxx = min(C,G);
        int maxy = min(D,H);
        return (maxx - minx)*(maxy - miny);
    }



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:35529次
    • 积分:1441
    • 等级:
    • 排名:千里之外
    • 原创:109篇
    • 转载:16篇
    • 译文:0篇
    • 评论:16条
    最新评论