来源Leetcode第223题矩形面积
在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。
每个矩形由其左下顶点和右上顶点坐标表示,如图所示。
示例:
1 | 输入: -3, 0, 3, 4, 0, -1, 9, 2 |
说明: 假设矩形面积不会超出 int 的范围。
把两个矩形叫做 A 和 B,不重叠就有四种情况,A 在 B 左边,A 在 B 右边,A 在 B 上边,A 在 B 下边。
判断上边的四种情况也很简单,比如判断 A 是否在 B 左边,只需要判断 A 的最右边的坐标是否小于 B 的最左边的坐标即可。其他情况类似。
此时矩形覆盖的面积就是两个矩形的面积和。
接下来考虑有重叠的情况。
此时我们只要求出重叠形成的矩形的面积,然后用两个矩形的面积减去重叠矩形的面积就是两个矩形覆盖的面积了。
而求重叠矩形的面积也很简单,我们只需要确认重叠矩形的四条边即可,可以结合题目的图想。
左边只需选择两个矩形的两条左边靠右的那条。
上边只需选择两个矩形的两条上边靠下的那条。
右边只需选择两个矩形的两条右边靠左的那条。
下边只需选择两个矩形的两条下边靠上的那条。
1 | public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { |