big-o - 这个算法的运行时间复杂度是多少?是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--;
}
}
解决方案
是的,它是 O(n)。如果其中的所有值a
都不是 10 的倍数,则它是一个常规的 for 循环。如果while
进入循环,则循环中的任何迭代while
都将在循环中跳过for
,这意味着它们不会花费额外的时间。所以是的,它总是 O(n)。
话虽如此,我建议不要在声明以外的地方修改迭代变量for
。它使代码难以遵循并且容易出错。
推荐阅读
- java - 我在一本编程书上看到了这段代码,输出是 3、5、7、9。有人能解释一下为什么输出中没有显示数字 1 吗?
- python - 编码问题
- regex - 正则表达式:下划线之间的匹配
- ios - 有什么方法可以从 LiDAR iOS14 导出点云数据?
- scala - 如何防止/限制未经授权的节点加入 Akka 集群?
- javascript - Splitting.js 和anime.js 等动画库不适用于React JS
- r - 如果遵守另一列中的条件,请保留一些值(基于 id)
- couchbase - 已解决:错误的路径 cbbackup accu/diff
- javascript - 具有输入值的重复对象
- android-fragments - 我希望将一个隐式加载微调器显示在具有一些视图的片段中,并且用户单击其中的任何一个