Space 函数的复杂度
Space complexity of function
我刚开始计算 space 复杂性,并且无法计算以下函数
const isUnique = string => {
if (string.length > 128) {
return false
}
let seen = new Set()
for (let i = 0; i < string.length; i++) {
if (seen.has(string[i])) {
return false
}
seen.add(string[i])
}
return true
}
会不会是 O(n),因为集合会随着字符串的大小按比例增长?或者 O(1),因为它是一个单一的集合,无论它有多大,长度都不会超过 128。
提前感谢您的帮助
是的,它是恒定的,因为无论您的输入有多大,集合都可能有一个最大大小。
事实上,如果 string.length <= 128
限制不存在,它甚至仍然是常量,只要函数需要 string 而不是数组任意项目,因为字符串的特点是由 UTF-16 字符组成,其中只有有限的数量 - 无论输入多长,该集合永远不会超过字母表的大小。
我刚开始计算 space 复杂性,并且无法计算以下函数
const isUnique = string => {
if (string.length > 128) {
return false
}
let seen = new Set()
for (let i = 0; i < string.length; i++) {
if (seen.has(string[i])) {
return false
}
seen.add(string[i])
}
return true
}
会不会是 O(n),因为集合会随着字符串的大小按比例增长?或者 O(1),因为它是一个单一的集合,无论它有多大,长度都不会超过 128。
提前感谢您的帮助
是的,它是恒定的,因为无论您的输入有多大,集合都可能有一个最大大小。
事实上,如果 string.length <= 128
限制不存在,它甚至仍然是常量,只要函数需要 string 而不是数组任意项目,因为字符串的特点是由 UTF-16 字符组成,其中只有有限的数量 - 无论输入多长,该集合永远不会超过字母表的大小。