有一种O(1)
时间复杂度的方法。请参考这篇详细的Vose“别名”方法描述。不幸的是,它的初始化成本很高。如果想了解更简单方法的比较时间,请参考Eli Bendersky的博客文章。更多时间信息可以在Python问题跟踪器中找到。
如今,如果您确实需要O(1)
查找,完全可以枚举整个美国人口(~3.17亿)。只需选择一个不超过3.17亿的数字,然后从中获取姓名。(317000000 * 4字节 = 1.268GB)
我认为有很多O(log n)
的方法。您需要O(1)
的特殊原因吗?(它们将使用更少的内存)