LeetCode 223. 矩形面积

题目描述:

二维平面上计算出两个由直线构成的矩形叠加覆盖后的面积。

每个矩形由其左下顶点和右上顶点坐标表示,如图所示。

Rectangle Area

示例:

输入: A = -3, B = 0, C = 3, D = 4, E = 0, F = -1, G = 9, H = 2
输出: 45

说明:

假设矩形面积不会超出 int 的范围。

思路:

覆盖后的面积=矩形1的面积+矩形2的面积-矩形交叉的面积;

其中矩形的交叉有多重情况,这里先观察X轴的交叉情况,Y轴同理。


JavaScript:

/**
 * @param {number} A
 * @param {number} B
 * @param {number} C
 * @param {number} D
 * @param {number} E
 * @param {number} F
 * @param {number} G
 * @param {number} H
 * @return {number}
 */
var computeArea = function(A, B, C, D, E, F, G, H) {
   function getLength(n1,n2,m1,m2)
   {
       if(m1>n2)
           return 0;
       else if(m2<n1)
           return 0;
       else if(m1<=n1&&m2>=n1&&m2<=n2)
           return m2-n1;
       else if(m1>=n1&&m2<=n2)
           return m2-m1;
       else if(m1<=n2&&m1>=n1&&m2>=n2)
           return n2-m1;
       else if(m2>=n2&&m1<=n1)
           return n2-n1;
   }
   var xLen=getLength(A,C,E,G);
   var yLen=getLength(B,D,F,H);
   var total=(C-A)*(D-B)+(G-E)*(H-F);
   if(xLen!=0&&yLen!=0)
       return total-xLen*yLen;
   else
       return total;

};

猜你喜欢

转载自blog.csdn.net/cc_fys/article/details/80601190
今日推荐