这里我有十分不能理解的地方,如果有大神明白的请务必求大神留言指点!谢谢!
#9.3.2 Logarithmic Complexity(对数复杂度)
def intToStr(i):
""" 假定i是非负整数
i返回i的十进制字符串表示"""
digits = '0123456789'
if i == 0:
return '0'
result = ''
while i > 0:
result = digits[i%10] + result#运算符%,是取除法中的余数的作用
#但除数小于被除数时,余数也必须为正,如:2%10 = 2,这里用了零除
i = i//10
return result
def addDigits(n):
""" 假定n是非负整数
返回n所有数字的和"""
stringRep = intToStr(n)
val = 0
for c in stringRep:
val += int(c)
return val
#很容易可以看出,for循环会执行O(len(stringRep))次
#(不懂的地方是:)如果假设可以在常数时间内把一个字符转换成数字,
#那程序的运行时间就会和O(log(n)) + O(log(n))成正比
#因此复杂度是O(log(n))(?这里真不懂...)