Python中dict.keys()的时间复杂度是多少?
当我解决这个LeetCode问题时,我遇到了一个问题。 尽管我的解决方案已被系统接受,但在线搜索下列问题后,我仍然没有任何想法: What is the time complexity of dict.keys() operation?
它是否会返回密钥的视图或密钥的真实列表(存储在内存中)?
在Python 2中,它是O(n),它构建了一个新列表。 在Python 3中,它是O(1),但它不返回一个列表。 要从字典的keys
绘制一个随机元素,您需要将其转换为列表。
这听起来像你可能使用random.choice(d.keys())
来解决该问题的第3部分。 如果是这样,那就是O(n),你错了。 您需要实现自己的哈希表或者维护单独的元素列表,而不会牺牲平均情况下的O(1)插入和删除操作。