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