我拿到这个作为面试问题。我得到了两个长度不等的链表,它们的每个节点都包含一个数字。我被要求构建一个第三个链表,它包含两个链表的和,同样是以节点中的1位数字的形式。例:链表1是4-7-9-6链表2是5-7那么第三个链表是4-8-5-3有人能给我一个有效的算法吗,在空间复杂度方面最小的折衷?(我不期望一个算法涉及多次颠倒列表)。
发布于 2010-09-24 19:06:57
或
int list1AsInt = 0; For each node {list1AsInt *= 10; list1AsInt += valueOfThisNode;} )valueOfBrandNewNode = list3AsInt % 10; list3AsInt /= 10; Add a new node that points to the prev one; )或
发布于 2010-09-24 19:46:11
对于这两个列表,
atoi()函数(如果您关心长度,可以使用atol()或atoll() )itoa()函数转换为字符数组,然后放回新列表。不过,我承认itoa()函数不是标准的。
发布于 2010-09-24 20:09:15
如果列表是双重链接的,这很容易:
https://stackoverflow.com/questions/3786225
复制相似问题