Time complexity 如何计算此实现的时间复杂度
这只是为了检查字符串中的所有字符是否唯一。Time complexity 如何计算此实现的时间复杂度,time-complexity,big-o,Time Complexity,Big O,这只是为了检查字符串中的所有字符是否唯一。 我从其他示例中了解到,对于内循环,它通常位于^2,但在本例中,内循环不是从索引0开始的。它从下一个元素开始,不管temp[i]是什么。所以我有点搞不清楚如何确定时间复杂度 外循环第一次迭代中的比较次数为n。第二种情况是n-1,依此类推到0。所以我们有一个总数: boolean isUnique(String s){ char [] temp = s.toCharArray(); for(int i = 0; i &l
我从其他示例中了解到,对于内循环,它通常位于^2,但在本例中,内循环不是从索引0开始的。它从下一个元素开始,不管temp[i]是什么。所以我有点搞不清楚如何确定时间复杂度 外循环第一次迭代中的比较次数为n。第二种情况是n-1,依此类推到0。所以我们有一个总数:
boolean isUnique(String s){
char [] temp = s.toCharArray();
for(int i = 0; i < temp.length; i++){
for(int j = i+1; j < temp.length; j++){
if(temp[i] == temp[j]){
return false;
}
}
}
return true;
}
这等于
n + (n - 1) + (n - 2) + ... + 1
那是
n * (n + 1) / 2
>1/2,n=2增长得比n快,我们认为复杂性是由^ 2增加的。
< P>外环的第一次迭代中的比较数是N。第二种情况是n-1,依此类推到0。所以我们有一个总数: boolean isUnique(String s){
char [] temp = s.toCharArray();
for(int i = 0; i < temp.length; i++){
for(int j = i+1; j < temp.length; j++){
if(temp[i] == temp[j]){
return false;
}
}
}
return true;
}
这等于
n + (n - 1) + (n - 2) + ... + 1
那是
n * (n + 1) / 2
>1/2,n=2增长快于n,我们认为复杂性是由^ ^ 2增加的。
< P>这是一个很好的解释。 假设两个循环都是从0开始的,比如说8,你的temp.length,然后以这种方式进行可视化(n^2 + n) * 1/2
数一数这里的o数,它们加起来等于^2
现在来谈谈你的情况
每次外循环从0开始,内循环从0继续到结束,所以
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
在这里计算0的数量,它们是n^2/2,位于^2本身
第一列表示外部循环,第二列表示内部循环的迭代次数
解释//第一次循环计数+第二次循环迭代对此有一个很好的符号解释 假设两个循环都是从0开始的,比如说8,你的temp.length,然后以这种方式进行可视化
(n^2 + n) * 1/2
数一数这里的o数,它们加起来等于^2
现在来谈谈你的情况
每次外循环从0开始,内循环从0继续到结束,所以
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
O O O O O O O O
在这里计算0的数量,它们是n^2/2,位于^2本身
第一列表示外部循环,第二列表示内部循环的迭代次数
解释//第一次循环计数+第二次循环迭代在最坏的情况下,内部循环将运行以下时间:n-1+n-2+n-3……+1,其中n是字符串的长度。所以当你将这个序列求和时。最高阶数为n^2。因此,最糟糕的时间复杂度出现在^2。在最糟糕的情况下,内部循环将运行以下时间:n-1+n-2+n-3……+1,其中n是字符串的长度。所以当你将这个序列求和时。最高阶数为n^2。因此,最糟糕的时间复杂度出现在^2上。