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;

};

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值