#6710. 时间复杂度专项练习 2

时间复杂度专项练习 2

1. 给定 n 个整数,每个整数最多 10 位,对每个数进行数位分离,时间复杂度是?
{{ select(1) }}

  • O(n)
  • O(10n)
  • O(n log n)
  • O(n²)

2. 以下代码的时间复杂度是?

for(int i = 1; i <= n; i++){
    for(int j = i; j > 0; j /= 10){
        cnt++;
    }
}

{{ select(2) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(n³)

3. 以下代码的时间复杂度是?

for(int i = 1; i <= n; i++){
    int x = i;
    while(x > 0){
        x /= 10;
    }
    for(int j = 1; j <= 5; j++){
        cnt++;
    }
}

{{ select(3) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)

4. 将一个整数 x 转换为 k 进制(不断除以 k),时间复杂度是?
{{ select(4) }}

  • O(k)
  • O(log x)
  • O(x)
  • O(x log x)

5. 对 m 个整数,每个数最多为 x,对每个数做进制转换,时间复杂度是?
{{ select(5) }}

  • O(m)
  • O(log x)
  • O(m log x)
  • O(m²)

6. 将一个长度为 k 的字符串(表示某进制数)转换为十进制,时间复杂度是?
{{ select(6) }}

  • O(1)
  • O(log k)
  • O(k)
  • O(k log k)

7. 一个数 x 的 k 进制表示长度为多少?(复杂度角度)
{{ select(7) }}

  • O(x)
  • O(k)
  • O(log x)
  • O(x log x)

8. 以下代码的时间复杂度是?

int l = 1, r = 1;
while(l <= n){
    if(r <= n) r++;
    else l++;
}

{{ select(8) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)

9. 遍历数组 a[1…n],对每个元素进行一次操作,时间复杂度是?
{{ select(9) }}

  • O(1)
  • O(log n)
  • O(n)
  • O(n²)

10. 以下代码的时间复杂度是?

for(int i = 1; i <= n; i++){
    for(int j = 1; j <= i; j++){
        cnt++;
    }
}

{{ select(10) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(n³)

11. 以下代码的时间复杂度是?

for(int l=1;l<=n;l++){
    for(int r=l;r<=n;r++){
        sum = 0;
        for(int k=l;k<=r;k++){
            sum += a[k];
        }
    }
}

{{ select(11) }}

  • O(n²)
  • O(n² log n)
  • O(n³)
  • O(n⁴)

12. 以下代码的时间复杂度是?

for(int i = 1; i <= n; i++){
    int cnt = 0;
    for(int j = 1; j <= n; j++){
        if(a[i] == a[j]) cnt++;
    }
}

{{ select(12) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(n³)

13. 先筛选满足条件的元素(O(n)),再排序(O(n log n)),整体时间复杂度是?
{{ select(13) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)

14. 使用计数数组统计频率,再计算每个值的组合数(C(cnt,2)),数字个数和数字范围都是 n。时间复杂度是?
{{ select(14) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(n³)

15. 以下代码的时间复杂度是?

for(int i = 1; i <= n; i++){
    for(int j = 1; j <= n; j *= 2){
        cnt++;
    }
}

{{ select(15) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)