Python “回文数”解的时间复杂度
这是一个解决LeetCode问题9回文数的解决方案。 我在考虑解决方案的时间复杂性。我试图通过例子来理解时间复杂性 例如,对于一个3位数的数字,它会通过while循环两次 对于一个6位数的数字,它经过while循环3次 我得出结论,这个数字增加了1000倍,而loop增加了1倍 那么时间复杂度是多少 谁能给我解释一下吗?非常感谢你Python “回文数”解的时间复杂度,python,Python,这是一个解决LeetCode问题9回文数的解决方案。 我在考虑解决方案的时间复杂性。我试图通过例子来理解时间复杂性 例如,对于一个3位数的数字,它会通过while循环两次 对于一个6位数的数字,它经过while循环3次 我得出结论,这个数字增加了1000倍,而loop增加了1倍 那么时间复杂度是多少 谁能给我解释一下吗?非常感谢你 def isPalindrome(self, x): if x < 0 or (x > 0 and x % 10 == 0): return Fa
def isPalindrome(self, x):
if x < 0 or (x > 0 and x % 10 == 0): return False
half = 0
while x > half:
half, x = half * 10 + x % 10, x / 10
return x in (half, half / 10)
如果x是元组中的两个值之一,则x/half/10返回True。相当于
x == half or x == half/10
..., ..., ... 通常形成元组或生成器。对于元组或列表等,可以很好地使用in运算符。。这就是这里发生的情况:您正在检查x是否在某个值,某个值/10中。括号不构成元组:逗号构成元组。括号仅用于防止根据上下文对逗号进行不同处理。例如,f3,5个调用f,其中有2个参数,3个和5个。f3,5用一个元组参数调用f。@切普纳:你说得对,我不够精确。在这种情况下,返回x的一半,half/10将尝试返回一个元组,该元组由x的一半结果和值的一半/10组成。您应该避免从根本上改变问题的性质,因为它会使以原始形式提供的注释和答案无效。你的问题开始于对半变量的理解,现在变成了一个复杂的问题