在任何情况下,该算法的时间复杂度都不得小于 O(N 2),因为您最多可以打印 O(N 2)个出租车编号。
从理论上讲,为了减少空间使用,您可以使用此处提到的建议:little
link。基本上,我们的想法是首先尝试所有可能的对
a,b 并找到解决方案:
a = 1 −(p − 3 * q)(p 2 + 3 * q 2)
b = -1 +(p + 3 * q)(p 2 + 3q 2)
然后,您可以使用以下命令找到合适的 c,d 对:
c =(p + 3 * q)-(p 2 + 3 * q 2)
d =-(p-3 * q)+(p 2 + 3 * q 2)
并检查它们是否均小于N。这里的问题是,求解方程组可能会有些混乱(“有点”,我的意思是 非常 乏味)。
在 O(N 2)空间的解决方案要简单得多,它可能会是因为能够在合理的时间限制运行可能会被罚款与二次空间使用二次的时间复杂度什么效率不够高。
希望对您有所帮助!



