- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一根杆子,我把它切成了碎片。给定原始杆上的一个点,有没有办法在常数时间内找出它属于哪一 block ?
例如:
|------------------|---------|---------------|
0.0 4.5 7.8532 9.123
给定一个位置:
^
|
8.005
我想要第3件
。
使用二进制搜索可以在 O(log n) 时间内轻松获得这样的答案,但是否可以在 O(1) 内完成?如果我以某种方式预处理“剪切”位置?
最佳答案
如果你假设你要查询的点是沿着杆均匀随机选择的,那么你可以有 EXPECTED 常数时间解,没有疯狂的内存爆炸,如下。如果您将杆分成 N 个等距的 block ,其中 N 是您的杆中原始不规则间隔段的数量,然后记录 N 个大小相等的 block 中的每一个,它是原始不规则段中的哪一个重叠,然后要进行查询,您首先只需获取查询点并进行简单的舍入以找出它位于哪个等间距的部分,然后使用该索引查找哪些原始线段与等间距的部分相交,并且然后检查每个相交的原始段以查看该段是否包含您的点(如果您想确保最坏情况下的性能仍然是对数的,您可以使用二进制搜索)。如果您假设查询点是沿着您的杆随机选择的,则此方法的预期运行时间是恒定的,并且如果您的杆最初被切成 N 个不规则的片段,则内存量为 O(N),因此没有疯狂的内存需求。
预期 O(1) 运行时间的证明:
当你计算你原来的 N 个不规则线段和我建议构建的 N 个等距线段之间的交集对总数时,总数不超过 2*(N+1)(因为如果你对所有的线段进行排序所有规则和不规则线段的端点,新的交点对总是可以归入定义规则或不规则线段的端点之一)。因此,您有最多 2(N+1) 个不规则线段的多集,以某种方式分布在它们相交的 N 个规则线段中。规则段之间交叉点的实际分布无关紧要。当您有一个统一的查询点并计算与包含查询点的规则线段相交的不规则线段的预期数量时,每个规则线段被查询点选择的概率为 1/N,因此相交的不规则线段的预期数量需要检查的是2*(N+1)/N = O(1)。
关于algorithm - 恒定时间搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18014624/
要求: 我们在数据库中有值 Chennai Baroda Bangalore New Delhi São Paulo, Lisboa San Jose 等... 所以我想将这些字符串转换成一个唯一的短
我需要通过 TCP 加密和发送数据(每条消息从几百字节到几百兆字节)以 block 从 Java 到 C++ 程序,并且需要发送的大小提前发送数据,以便收件人知道何时停止读取当前消息并处理它,然后等待
我不太知道如何问这个问题,因此我将其作为示例: 想象在一个应用程序中您有一个Country对象。此对象有两个属性:Name和'Bordering Countries'集合。稍后可能会添加更多属性,但这
我们正在尝试使用 IoT 中心、流分析和表存储来处理仪表板上的事件驱动图标(开/关/事件)。我无法让实际过程在 6 秒内完成。流分析的水印恒定为 5 秒。该网站声称即时处理。 https://azur
我正在尝试获取一个 JTabbedPane,其中所有选项卡(实际选项卡,而不是组件)具有相同的宽度(最宽标签所需的最小宽度或恒定宽度)。 我试图覆盖 BasicTabbedPaneUI.getTabB
你好安卓开发者, 我正在使用 OpenGLES 1.0 在 Eclipse 中为 Android 开发一个简单的游戏。我正在使用 Samsung Galaxy S2 Android(2.3) 作为开发
我正在尝试使用 ColorMatrix 为整个图像设置一个恒定的色调值。我的目标是使整个图像看起来颜色相同,而不会失去任何区域的亮度。我找到了一种使用 ColorMatrix 来移动图像的色调值的方法
我最近将我的 Postgres 数据库从 Windows 迁移到 CentOS 6.7。在 Windows 上,数据库从不使用太多 CPU,但在 Linux 上,我看到它使用恒定的 ~30% CPU(
你好,我正在用 SDL2 开发一款很棒的游戏,我添加了一个 FPS 调节器以使其在每台机器上都能流畅运行,但后来我创建了一个示例程序来输出 fps(不是调节,只是输出以查看电流的功率机器运行 ) 我在
我在 IntelliJ IDEA 13.0 中开发了一个应用程序,但是当我在我的设备上运行该应用程序时,它会不断等待调试器(如果我在 Debug模式下运行,调试器连接时没问题)但是如果远离计算机,我无
我想在 stat_密度2 图中绘制多个组,其中 alpha 值与每组中的观察计数相关。然而,由 stat_密度2d 形成的水平似乎已标准化为每组中的观察数量。例如, temp <- rbind(mov
我是一名优秀的程序员,十分优秀!