[英]What is the run time complexity of this code?
我刚在一个面试问题中得到这个,但是被mod难住了,我的答案是O(log10),因为它每次都被分割,但我无法解释。 所以我把答案改成了 O(n) 但面试官说 n 代表什么,我想说 x,但这没有意义。 如果 x 为 1000,则代码不会运行 1000 次。
x
是 1-10000000 之间的任何数字
def code(x):
count = 0
while x > 0:
x = x // 10
result = x % 7
if (result % 7 )== 0:
count += 1
return count
while 循环执行大约log 10次。 rest 是恒定时间操作。 因此,您的时间复杂度为O(log x) 。 请注意,在大 O 表示法中,对数的底数无关紧要。
一个更复杂的问题是count
相对于x
有什么值。 但这不是你要求的。 请注意,这些计算(假设是恒定时间算术运算)需要恒定时间,就像行x = x // 10
一样。
编辑:如果x
在上面有界,那么时间复杂度是O(log n)还是O(1)就会变成一个哲学问题。 这取决于您如何看待它(边界是算法的一部分,还是您是否将算法视为一般算法,而边界只是您对输入的了解)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.