leetcode:Rectangle Area

时间:2024-09-14 18:07:44

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.

leetcode:Rectangle Area

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

本题是一道简单的数学题,意思就是要求两个矩形的覆盖面积。

根据每个矩形是由它的下左边角和它的上右边角定义的特征,再结合公式:覆盖面积=两个矩形的面积-相交的面积,即可。

代码如下:

class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int area = (C-A)*(D-B) + (G-E)*(H-F);
if (A >= G || B >= H || C <= E || D <= F)
{
return area;
}
int top = (D>H)?H:D; //和用min(D,H)是一样的
int bottom = max(B, F);
int left = max(A, E);
int right = min(C, G);
return area - (top-bottom)*(right-left);
}
};

看了看别人做的,

class Solution {
public:
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { if(A > E) return computeArea(E, F, G, H, A, B, C, D); int res = (C - A)*(D- B) + (G - E)*(H - F); if(C > E && B < H && F < D) res -= (min(C, G) - E) * (min(D, H) - max(B, F)); return res; }
};

核心思想都是差不多的。