LeetCode 223. 【Java】223. Rectangle Area
原题链接
中等
作者:
tt2767
,
2020-03-24 20:35:37
,
所有人可见
,
阅读 579
/**
1. 总面积 = 矩形面积和 - 相交面积
2. 相交面积 = 在x轴投影的相交长度 * 在y轴投影的相交长度
3. 线段相交长度 = 右端点的最小值 - 左端点的最大值 , 小于0则不相交
4. 注意差值可能爆int, 要强转为long计算
*/
class Solution {
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
long a1 = Math.abs(A-C) * Math.abs(B-D);
long a2 = Math.abs(E-G) * Math.abs(F-H);
long dx = Math.max(0L, Math.min(C, G) + 0L - Math.max(A, E));
long dy = Math.max(0L, Math.min(D, H) + 0L - Math.max(B, F));
return (int)(a1 + a2 - dx * dy);
}
}