本文共 686 字,大约阅读时间需要 2 分钟。
给定平面直角坐标系里两个矩形,求其边界围成的区域的面积。
算一下overlap的部分即可。如果没有overlap就直接返回两个矩形面积和,否则返回面积和减去overlap的面积。代码如下:
public class Solution { public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { // 算一下overlap的部分的上下左右边界坐标 int left = Math.max(A, E), right = Math.min(C, G); int low = Math.max(B, F), up = Math.min(D, H); // 求两个矩形的面积和 int sum = (C - A) * (D - B) + (G - E) * (H - F); // 如果没有overlap,直接返回面积和 if (right <= left || up <= low) { return sum; } // 否则返回面积和减去overlap的面积 int overlap = (right - left) * (up - low); return sum - overlap; }}
时空复杂度 O ( 1 ) O(1) O(1)。
转载地址:http://azcs.baihongyu.com/