19-今日一扣(LeetCode)-223-两个矩形重叠面积以及融合面积计算-M

tech2022-12-01  88

223. 矩形面积

LeetCode

计算两个矩形融合之后的面积。(非原题描述)

题解:

本体思路不是最优的,利用了之前的两个矩形重叠判断的思路。

该思路也可以用来求解矩形重叠部分的面积。

融合后面积 = 两个矩形的总面积 - 重叠部分面积

重叠部分的面积 = x方向投影的交集长度 * y方向投影的交集长度

在投影交集计算时,即计算[a,b]与[c,d]的交集的长度。

手下令[a,b]域永远是左侧起点那个集合。如果不是,进行交换。

class Solution { public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { int l1,l2; l1 = intersectionLen(A,C,E,G); l2 = intersectionLen(B,D,F,H); int lap = l1*l2; long ans = (D-B)*(C-A) + (H-F)*(G-E) - lap; return (int)ans; } private int intersectionLen(int a,int b,int c,int d) { if(a==b || c==d){ return 0; } if(a>c) { int tmp = a; a=c; c = tmp; tmp = b; b=d; d = tmp; } // 情况1 if(d>b) return b > c ? b-c : 0; else //情况2,B域在A域内部 return d-c; } }
最新回复(0)