扫描线+离散化 计算矩形面积

我们给出了一个(轴对齐的)二维矩形列表 rectangles 。 对于 rectangle[i] = [x1, y1, x2, y2],其中(x1,y1)是矩形 i 左下角的坐标, (xi1, yi1) 是该矩形 左下角 的坐标, (xi2, yi2) 是该矩形 右上角 的坐标。

计算平面中所有 rectangles 所覆盖的 总面积 。任何被两个或多个矩形覆盖的区域应只计算 一次 。返回 总面积 。因为答案可能太大,返回 10^9 + 7 的 模 。

i​​​​​​LeetCode链接

思路:

我的第一反应是计算所有矩形面积,然后减去两两相交的面积。这种做法是错误的因为每个重叠部分只要减去一次,可能会重复减去。

这道题的正确思路是把整个区域按所有矩形的边界进行划分,然后逐个计算分块的面积。

步骤:

  • 把所有矩形的左右边存到一个数组和上下边存到另一个数组,分别将它们去重,然后排序。此时得到的按从左到右和从上到下的排列边界,它们将整个区域划分为了一条条横纵排列的线段,线段组成了一个个小矩形。
  • 按左界排序矩阵。这步是为了接下来从左到右扫描做准备。
  • 创建一个二维
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值