这是我的代码。谢谢大家!
int length = array.length;
for (int i = 0; i < length - 1; i++) {
int counter = 1;
while(i< length - 1 && array[i] == array[i+1]) {
counter++;
i++;
}
System.out.print(counter +" ");
答案 0 :(得分:0)
您的循环执行的迭代总数是N-1次,因为当我超过N-1时,两个循环都会中断。但是,程序的实际时间复杂度也取决于字符串的长度,因为字符串之间的比较需要O(| S |)时间,其中| S |是要比较的两个字符串的(最小)长度。因此,如果您的字符串总长度为M,则总体时间复杂度将为O(N + M)。
您的错误是假设嵌套循环始终产生二次复杂度。如果您设置一些计数器来评估代码所需的操作数量并测试较大的N,则会发现它是线性缩放而不是二次缩放。