我在解决this LeetCode problem时遇到了一个问题。虽然我的解决方案已被系统接受,但在网上搜索以下问题后我仍然不知道:
What is the time complexity of dict.keys() operation?
它是否返回键的视图或键的真实列表(存储在内存中)?
答案 0 :(得分:13)
在Python 2中,它是O(n),它构建了一个新列表。在Python 3中,它是O(1),但它没有返回列表。要从字典keys
中绘制随机元素,您需要将其转换为列表。
听起来你可能正在使用random.choice(d.keys())
来解决该问题的第3部分。如果是这样,那就是O(n),你弄错了。您需要实现自己的哈希表或维护单独的元素列表,而不会牺牲平均情况下的O(1)插入和删除。