将几个矩形结构组合成一个大矩形的最佳方法是什么
What is the best way to composite several rectangle structs together into one large rectangle
假设我有 2 个矩形(originX、originY、宽度、高度)
0,0,100,100
100,100,100,100
获得包含两者的矩形的最佳方法是什么?
即:0,0,200,200
这是一张糟糕的油漆图片来说明我的意思
我现在的计划是:
1) 找到最小的原点,即return rect
的原点
2) 找到最高的originY+height,即return rect
的上界
3) 找到最高的originX+width,即return rect
的右边界
但我的问题是可能有数千个矩形,所以我想确保我有最好的解决方案
我想我很难找到解决方案,因为我的措辞很糟糕。在我看来,这类似于合成矩形——但是否有另一种方式来描述我在这里尝试做的事情?
无论如何,您都必须查看每个矩形才能找到答案。如果你连一个都不看,你可能会错过一个超出你范围的点。所以无论你能找到什么最好的解决方案都是 O(n).
由于我们正在寻找 O(n) 的解决方案,因此非常简单:只需遍历每个矩形即可。存储目前找到的最小值和最大值 x 和 y。请注意,在这种情况下,最大值 x 和 y 由 originX + width
和 originY + height
定义。遍历所有矩形后,由点 minX
、minY
、maxX
、maxY
形成的矩形将是您的解决方案。
假设我有 2 个矩形(originX、originY、宽度、高度)
0,0,100,100
100,100,100,100
获得包含两者的矩形的最佳方法是什么?
即:0,0,200,200
这是一张糟糕的油漆图片来说明我的意思
我现在的计划是:
1) 找到最小的原点,即return rect
的原点
2) 找到最高的originY+height,即return rect
的上界
3) 找到最高的originX+width,即return rect
但我的问题是可能有数千个矩形,所以我想确保我有最好的解决方案
我想我很难找到解决方案,因为我的措辞很糟糕。在我看来,这类似于合成矩形——但是否有另一种方式来描述我在这里尝试做的事情?
无论如何,您都必须查看每个矩形才能找到答案。如果你连一个都不看,你可能会错过一个超出你范围的点。所以无论你能找到什么最好的解决方案都是 O(n).
由于我们正在寻找 O(n) 的解决方案,因此非常简单:只需遍历每个矩形即可。存储目前找到的最小值和最大值 x 和 y。请注意,在这种情况下,最大值 x 和 y 由 originX + width
和 originY + height
定义。遍历所有矩形后,由点 minX
、minY
、maxX
、maxY
形成的矩形将是您的解决方案。