LeetCode 223. 矩形面积

本文介绍了一种计算两个由直线构成的矩形叠加覆盖后面积的方法。通过分析矩形的坐标并使用JavaScript实现,该算法能准确计算出矩形交叉部分的面积,并给出完整示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述:

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

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

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;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值