leetcode [#226]

目录

题目


解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Solution {
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int s1 = (C - A) * (D - B);
int s2 = (G - E) * (H - F);
int left = Math.max(A, E);
int right = Math.min(G, C);
int top = Math.min(D, H);
int bottom = Math.max(B, F);
int common = 0;
if(right > left && top > bottom) common = (right - left) * (top - bottom);
return s1 + s2 - common;
}
}

注意事项

  1. 不要尝试分类讨论所有情况,两个长方形的位置关系的可能性过于复杂。
  2. 先计算出各自面积。
  3. 关于公共重叠面积,假设有重叠,那么重叠的左边界由AE的较大者确定,右边界由GC的较小者确定,上边界由DH的较小者确定,下边界由BF的较大者确定。由此计算重叠面积。