原题链接在这里:https://leetcode.com/problems/rectangle-area/
思路: 方块1面积 + 方块2面积 - 重叠面积
Note: 算重叠的面积时会有overflow,并且很难发现. Math.min(C,G) 之前必须加 cast,
原来写(long)(Math.min(C,G) - Math.max(A,E))会报错是因为Math.min(C,G)和Math.max(A,E)都是 Integer, 所以cast之前的结 果会default成Integer, 还是会有overflow.
AC Java:
public class Solution {
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) {
int area1 = (C-A)*(D-B);
int area2 = (G-E)*(H-F);
int overlap;
long width = Math.max((long)(Math.min(C,G) - (long)Math.max(A,E)),0);
long length = Math.max((long)(Math.min(D,H) - (long)Math.max(B,F)),0);
overlap = (int)(width*length);
return area1 + area2 - overlap;
}
}