[英]Is this function O(n^3)?
正在研究 leetcode 问题并收到反馈,以下代码块的时间复杂度为 O(n^3)。 谁能帮我解释一下这是怎么回事? 我计算了两个循环,这让我相信这是 O(n^2)。
var longestPalindrome = function(s) {
let maxString = "";
let originalString = s;
let reversedString = s.split("").reverse().join("");
for (let i = 0; i < s.length; i++){
for (let j = i+1; j < s.length+1; j++){
if (i<j){
let iteratedSubstring = originalString.substring(i,j)
if (reversedString.includes(iteratedSubstring) && (iteratedSubstring === iteratedSubstring.split("").reverse().join("")) ){
iteratedSubstring.length > maxString.length ? maxString = iteratedSubstring: maxString = maxString
}
}
}
}
return maxString
}
if
块执行了 O(²) 次,但该块的主体不是 O(1):
originalString.substring(i,j)
可能具有 O(−) 时间复杂度(取决于实现),因此平均时间复杂度为 O()。 另见: Javascript substring 是虚拟的吗?reversedString.includes(iteratedSubstring)
具有 O() 时间复杂度iteratedSubstring.split("")
具有 O() 时间复杂度.reverse()
具有 O() 时间复杂度.join("")
具有 O() 时间复杂度因此, if
块具有 O(n) 的时间复杂度,给出 O(³) 的整体时间复杂度,则有几个原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.