Find the total area covered by two rectilinear rectangles in a 2D plane.
Example:
Input: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2 Output: 45
Note:
Assume that the total area is never beyond the maximum possible
<Solution>
<Solution>
想法如下
- 首先,先算出兩個矩形的面積總和
- 檢查兩個矩形是不是有重疊,有的話,計算出重疊面積,然後從總和減掉即可
Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { | |
int ans = (C-A) * (D-B) + (G-E) * (H-F); | |
boolean isNotOverlapped = C <= E | |
|| D <= F | |
|| A >= G | |
|| B >= H; | |
if(!isNotOverlapped) { | |
final int width = Math.min(C,G) - Math.max(A,E); | |
final int height = Math.min(D,H) - Math.max(B,F); | |
ans -= width * height; | |
} | |
return ans; | |
} | |
} |
沒有留言:
張貼留言