Leetcode 223. 矩形面积
题目
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。
题解
如果两个矩形没有交叉区域,则之间返回两个矩形的面积
如果有交叉区域,我们用两个矩形的面积减去重叠部分的面积即可。详细过程见代码
代码
int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
if(C<=E || G<=A || B>=H || F>=D) return (C-A)*(D-B) + (G-E)*(H-F); //无重叠部分
int x1 = max(A,E), x2 = min(C,G), y1 = max(B,F), y2 = min(D,H); //求出重叠小矩形的左下角和右上角的坐标
return (long)(C-A)*(D-B) + (G-E)*(H-F) - (y2-y1)*(x2-x1);
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/rectangle-area
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。