繁体   English   中英

这是 function O(n^3) 吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM