gpt4 book ai didi

algorithm - 一个程序的复杂度如何求最大子串的长度?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:06 25 4
gpt4 key购买 nike

我编写了一个示例 javascript 程序来查找给定字符串的最大子字符串的长度并且它有效。我无法计算它的时间复杂度。有人能帮我吗?我确实理解具有两个循环的程序是二次复杂度,具有三个循环的程序具有三次复杂度等等。这总是真的吗?这个程序有两个循环。我能说它的复杂度是O(n^2)吗?

function AllSubStrings()
{
var myString = prompt("Enter the string");
var arr = myString.split("");
var tempArr = [];
var maxLength = 0;

for(var i = 0; i<arr.length; i++)
{
temp = null;

for(var j = i; j<arr.length; j++)
{
if(j === i)
{
tempArr.push(arr[j])
temp = arr[j];
}
else
{
temp = temp + arr[j];
if(temp.length > maxLength)
{
maxLength = temp.length;
}
tempArr.push(temp);
}
}
}
document.write("All SubStrings are: "+tempArr+"<br/>");
document.write("Length of the largest substring is: "+maxLength);
}

最佳答案

您有两个 n 阶嵌套循环(其中 n 是字符串的长度),O(n*n) = O(n2) 也是如此。

还有一些其他操作在计算大 O 时并不重要,例如 Split,需要 O(n),但与 O(n2) 相比并不重要,或者 push 和 pop, ...在每个 for 循环中花费 O(1),但如果我们有多个 O(1) 操作,这并不重要。

详细说明:我们知道第一个循环运行了n次,但是关于第二个循环,它将运行O(n-i)次,所以总运行时间是:

Σ(n-i) = Σ n - Σ i = n2 - n(n-1)/2 = O(n^2)。

关于algorithm - 一个程序的复杂度如何求最大子串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com