题目地址:
https://leetcode.com/problems/rectangle-area/
给定平面直角坐标系里两个矩形,求其边界围成的区域的面积。
算一下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)。