LeetCode650-只有两个键的键盘

题目链接

英文链接:https://leetcode.com/problems/rectangle-area/

中文链接:https://leetcode-cn.com/problems/rectangle-area/

题目详述

在二维平面上计算出两个由直线构成的矩形重叠后形成的总面积。

每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

示例:

输入: -3, 0, 3, 4, 0, -1, 9, 2
输出: 45
说明: 假设矩形面积不会超出 int 的范围。

题目详解

  • 覆盖面积 = 两个矩形面积之和 - 交集面积。
  • 虽然矩形面积不会超出 int 的范围,但是中间的计算过程可能会超出 int 的范围,所以中间过程要用 long。
  • 算出长和宽,求出三个矩形面积即可。
1
2
3
4
5
6
7
8
9
public class LeetCode_00223 {

public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
long x = (long) Math.min(C, G) - Math.max(A, E);
long y = (long) Math.min(D, H) - Math.max(B, F);
int intersection = x > 0 && y > 0 ? (int) (x * y) : 0;
return (C - A) * (D - B) + (G - E) * (H - F) - intersection;
}
}