簡體   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