【发布时间】:2014-05-21 06:26:04
【问题描述】:
输入是 200 K 双精度对,即密钥对。它们没有范围,即键可以是任何数字。
现在,任务是将这些大数据分为以下几类:
key1 => (value1, value2, value3)
key2 => (value1, value2, value3)
...
...
在比较键的相等性(双精度)时可以考虑使用 EPSILON(例如 1e-8)。
我开发了一个 O(n^2) 解决方案,但对于 200K 双打来说太慢了。想知道有什么改进吗?比如 O(nlogn) 会很好。
另一个例子,
Input: <0.1, 0.3>, <0.1, 0.4>, <0.2, 0.5>, <0.2, 0.6>, <0.3, 0.7>
Output
0.1 => (0.3, 0.4)
0.2 => (0.5, 0.6)
0.3 => (0.7)
【问题讨论】:
-
您将如何处理您有 N 个值都在 EPSILON 范围内的考虑集中的某个其他值的情况,例如(1.0、1.0 + EPSILON、1.0 + 2xEPSILON、1.0 + 3xEPSILON)?
-
考虑键是一样的。
-
所以你可以有 1,000,000 个遵循该模式的数字,并且它们都有相同的键?但是如果你有 (1.0, 1.0 + 2xEPSILON, 1.0 + 4xEPSILON, ...) 他们会有不同的键吗?对我来说没有意义。
-
没关系,输入不会有太多关闭键
标签: algorithm