首页 > 解决方案 > 这个算法的运行时间复杂度是多少?是O(n)吗?

问题描述

我只想知道这个算法是否是 O(n)。

for(int i=0;i<n;i++){
    if(a[i]%10==0){
        temp=a[i];
        i++;
        while(a[i]%10!=0){
            a[i]=temp;
            i++;
        }
        i--;
    }
}

标签: big-o

解决方案


是的,它是 O(n)。如果其中的所有值a都不是 10 的倍数,则它是一个常规的 for 循环。如果while进入循环,则循环中的任何迭代while都将在循环中跳过for,这意味着它们不会花费额外的时间。所以是的,它总是 O(n)。

话虽如此,我建议不要在声明以外的地方修改迭代变量for。它使代码难以遵循并且容易出错。


推荐阅读