/* 像是一道数据分析题 思路就是两个矩形面积之和减去叠加面积之和 */ public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { //求两个面积 int a1 = (C-A)*(D-B); int a2 = (G-E)*(H-F); //求叠加面积,(低上限-高下限)*(左右线-右左线) int h1 = Math.min(D,H); int h2 = Math.max(B,F); int w1 = Math.min(C,G); int w2 = Math.max(E,A); //这里要考虑到没有相交的情况 //同时这里不能比较h1-h2和0的大小,因为如果负数太大会溢出,比0大 int o = (h1<=h2||w1<=w2)?0:(h1-h2)*(w1-w2); return a1+a2-o; }