我有2个代表非常大的数字的链表(除了链表之外不能保存在其他任何内容中)。 我有一个复杂的O(n)的Add方法。 我想知道是否有可能以任何方式将2个数字相乘而不将整个列表转换为String / int / long(如果可能的话,在列表中计算),并保持复杂度为O(n ^ 2)
现在,无论我尝试什么,我都会达到O(n ^ 3)的复杂程度,而且它还不够好。
感谢所有的帮助。
答案 0 :(得分:1)
大多数西方人在学校学习的"long multiplication"算法已经给你O(n²)复杂度,所以也许你可以解释一下你正在使用什么算法。
有些算法的复杂程度较低:Karatsuba,Tom-Cook和Schönhage–Strassen algorithm。最后一个具有迄今已知的最低已知复杂度,O(n log n log log n),但可能还有更好的算法尚待发现。