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上。