我被要求解决这个问题:
有两个单链表。 我需要编写一个方法来获取这两个链表并返回一个指向这两个列表中后缀相同的起始点的指针。
示例:
给出:
1->2->4->6->8->10->15
2->4->8->10->15
返回的值是指向成员的指针 - 8。
但是,
我需要在不更改列表或使用更多内存的情况下执行此操作,
并且 - 我们只需要扫描一次列表,意味着T(n)=O(n)
。
答案 0 :(得分:2)
现在......我知道你说你只想扫描一次列表,我已经完成了两次,但你也说这意味着 T(n)= O(n),这是不正确。
在 O(n)中扫描列表两次 ,并且需要在不使用无限额外内存的情况下解决问题。
答案 1 :(得分:0)
这是一个伪代码..不是Python代码 取两个列表,让p1指向更长的列表,p2指向更短的列表,
while p1->next!=NULL:
if p1->value = p2->value:
p1 = p1->next
p2 = p2->next
else:
p1 = p1->next
returnpointer = p1->next// if it happens that some elements are same towards end but not the last element.. p1->next would be pointing to NULL anyways and else.. it'll always be the element next to the last element which wasn't same
return returnpointer