提问人:LateGameLank 提问时间:11/2/2023 更新时间:11/2/2023 访问量:26
.values()、.items()、.keys() 的时间和辅助空间复杂度
Time and Auxiliary Space Complexities of .values(), .items(), .keys()
问:
我最近开始关注 Python 字典的复杂性。然而,当我开始更深入地思考数据结构时,我遇到了几个问题——我正在努力寻找明确的答案:
、 和 的时间和辅助空间复杂度是多少?我的印象是,由于它们是视图对象,因此它们既不需要额外的空间,也不需要额外的时间来检索。这样,它们几乎就像预设的(但动态的)属性一样。.values()
.items()
.keys()
假设我们有下面的函数,它接受一个输入字典:foo
d
def foo(d):
bar = d.values()
虽然这个函数的空间复杂度为 ,字典中的条目数在哪里,但这个函数的辅助空间复杂度是多少?换句话说,会占用额外的空间吗?如果是这样,则此函数的辅助空间将为 。如果不是,则辅助空间为 。O(N)
N
d.values()
O(N)
O(1)
同样,这个函数的时间复杂度是 ,字典中的条目数在哪里,还是按时间运行?O(N)
N
O(1)
从本质上讲,我试图理解视图对象的机制。谢谢!
答:
1赞
Kelly Bundy
11/2/2023
#1
它们都需要 O(1) 时间和空间。它们只返回一个内部引用字典的小视图对象,因此当您对视图对象执行某些操作时,视图对象会使用该字典来实际执行此操作。
评论