python - 在以下代码中声明 dict 和数组的空间复杂度是多少?
问题描述
由于我声明了字典和数组,以下代码的空间复杂度是多少?
--> 根据我的假设,我会说 0(n + m) 因为 dict 占用 o(n) 空间,而堆栈也占用 o(m) 空间。我对么?
hash_brackets = {
"(":")",
"{":"}",
"[":"]"
}
stack = []
for bracket in s:
if bracket in hash_brackets:
stack.append(hash_brackets[bracket])
elif len(stack) > 0 and bracket == stack[-1]:
stack.pop()
else:
return False
return len(stack) == 0
解决方案
前言
发布的代码无效且不完整,但它看起来像检查括号是否平衡的函数体。填补空白,我得到了这个:
def balanced_brackets(s: str) -> bool:
hash_brackets = {
"(": ")",
"{": "}",
"[": "]"
}
stack = []
for bracket in s:
if bracket in hash_brackets:
stack.append(hash_brackets[bracket])
elif len(stack) > 0 and bracket == stack[-1]:
stack.pop()
else:
return False
return len(stack) == 0
其次,我假设您要问的是大 O 复杂性,而不是小 O。
dict 是 O(1) 因为你不添加它。
该列表是 O(n),因为您添加到它。请记住,big-O 是一个上限,在这种情况下,这意味着其中的每个字符s
都是一个开括号。
推荐阅读
- javascript - 节点 - 在后台不规则地运行脚本
- wireshark - 如何将 .pcapng 文件(wireshark)数据转换为 .bin 文件
- laravel - 如何在 laravel 8 中使用复合主键?
- javascript - Discord JS clearTimeout 未重置 setTimeout
- java - 尝试在 cmd 中运行 java 类时出错 - 找不到该类
- kotlin - 有没有一种简单的方法来优化 Kotlin 中的代码?
- module - 供应商的 Terraform 模块
- mongodb - MongoDB聚合查找未在数组中列出的项目
- flutter - 参数类型'Future
' 不能分配给参数类型 'bool'。当我尝试从 Firestore 中检索布尔值时 - python - socket.timeout:使用 pyspark 执行 python 时超时