首先判断是不是有重叠部分,其次计算重叠的矩形
重叠矩形的左边是两条左边的边,最右的一条
重叠矩形的右边是两条右边的边,最左的一条
重叠矩形的上边是两条上边的边,最下的一条
重叠矩形的下边是两条下边的边,最上的一条
这就行了呀
class Solution {
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int a=Math.abs(A-C);
int b=Math.abs(B-D);
int c=Math.abs(E-G);
int d=Math.abs(F-H);
if(A>=G||C<=E||B>=H||D<=F) return a*b+c*d;
int a1=Math.max(A,E);//重叠矩形的左边是两条左边的边,最右的一条
int b1=Math.min(C,G);//重叠矩形的右边是两条右边的边,最左的一条
int c1=Math.min(D,H);//重叠矩形的上边是两条上边的边,最下的一条
int d1=Math.max(B,F);//重叠矩形的下边是两条下边的边,最上的一条
return a*b+c*d-Math.abs(b1-a1)*Math.abs(c1-d1);
}
}
网友评论