- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
给你 n 个点,未排序在一个数组中。您应该找到两个覆盖所有点的矩形,并且它们不应重叠。矩形的边应平行于 x 或 y 坐标。
该程序应返回所有这些点覆盖的最小面积。第一个矩形的面积 + 第二个矩形的面积。
我试图解决这个问题。我按 X 坐标对点进行排序,第一个是第一个矩形的最左边的一个。当我们遍历这些点时,我们会找到最高点和最低点。我在想,当 x 的两个点之间的差异最大时,这意味着第一个点是第一个矩形的最右边,第二个点是第二个矩形的最左边。
当给出第一个示例中的点时,它应该可以工作,但是,如果示例是第二个示例,则它不起作用。因为它会返回这样的东西,这是错误的:
这应该是正确的:
然后我想做两次排序,只是,第二次按 Y 坐标进行排序,然后比较两个总面积。点按 x 排序和点按 y 排序时的面积,较小的面积是正确答案。
最佳答案
这两个矩形不能重叠,因此一个必须完全位于右侧或在另一个之上。您按 x 值对点进行排序并找到最大差距的想法很好,但您应该按照您的建议对两个方向都这样做。这会在您的示例中找到正确的矩形。
然而,最大的差距不一定是理想的 split 点。根据边界框在垂直方向上的范围,拆分可能在其他地方。考虑一个有四个象限的矩形区域,其中两个对角线相对的象限填充有点:
在这里,理想的分割不是最大的差距。
您可以通过考虑具有相邻 x 和 y 坐标的点之间的所有可能分割来找到理想位置。
然后对最小的顶部和底部矩形执行相同的操作。可以合并最后两个步骤,这将保存右矩形最小边界的数组。
这在时间上应该是 O(n · log n):排序是 O(n · log n),单遍是 O(n)。第一个矩形的运行边界框需要 O(n) 额外内存。
关于algorithm - 找到覆盖所有点的最小面积的两个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47349921/
我正在开发一个企业名录网站,其搜索将由 Google map 驱动。用户将能够根据各种标准搜索他们所在地区的企业,但主要的想法是,如果您搜索例如“新泽西州的水管工”,您将获得新泽西州所有水管工的结果。
我得到了一条任意形状的曲线,包围了一些区域。 我想估计曲线在 iPhone/iPad 屏幕上包围的像素数。我该怎么做? 曲线被定义为点的连续 x/y 坐标。 闭合曲线。 通过用户的触摸(touches
我想删除 R 在点阵图周围的默认边距。这意味着我想摆脱红色矩形之外的所有空白。这是示例: library (raster) library(rasterVis) f <- system.file("e
无法找到任何直接的解决方案来计算 GMSPolygon 对象面积。有什么方法可以做到这一点,或者我必须用边长和一些数学计算来计算它? 最佳答案 感谢@Larme; GMSGeometryArea 就是
假设例如我想将标准正态分布的密度曲线下方的面积着色为十分。我希望最左边 10% 的区域具有与接下来的 10% 不同的阴影,依此类推。 这是问题“Shading a kernel density plo
我正在为 Extjs 开发一个混合图表组件,并且曲线太尖锐了。我找不到曲线具有半径的配置。如果你处理过类似的事情,你能提供一些方法让我的曲线变得平滑一点吗?这是我的代码: Ext.define('Ex
上下文 我有一个 3D 对象,我有它的坐标。然后我将对象旋转 n 次,当对象投影到网格上时,我想计算对象的 2D 面积(以纳米为单位)。 例如, 我在下面有一张图片描述了我的问题。我有相同的对象,但在
当我知道我需要的地 block 总数并且我希望排列是一个正方形(可能有一些空的子地 block )时,我正在尝试弄清楚如何计算子地 block 尺寸。 例如,如果我需要 22 个子图,那么我会为总共
我是一名数据科学家。主要使用Python和SQL来编写代码。我使用data studio进行可视化。所以我对JS不熟悉。我的诀窍data studio community visualizations
我有 1797 张 Mnist 图像,为此我需要提取两个特征(FilledArea、EulerNumber)。我知道如何在 Matlab 中做到这一点。我的特征矩阵在 Matlab 中具有(并且是正确
我希望能够在 Google map 上绘制形状(圆形、多边形和矩形),但我想限制可以绘制的形状的大小(面积)。因此,以圆圈为例,期望的行为是当用户开始从 map 上的某个点拖动鼠标以形成圆圈时,圆圈会
我是一名优秀的程序员,十分优秀!