题目:
现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。
给定两个链表的头指针headA和headB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值
测试样例:
{1,2,3,4,5,6,7},{2,4,6,8,10}返回:[2,4,6]
思路:
同时维护两个指针curA,curB。因为headA,headB都是有序的,当curA的值小于curB时,就把curA向后移动;反之亦然。当遇到值相等的结点时,就把它们记录下来。
代码:
class Common:
def findCommonParts(self, headA, headB):
# write code here
curA, curB = headA, headB
res = []
while curA and curB:
if curA.val < curB.val:
curA = curA.next
elif curB.val < curA.val:
curB = curB.next
else:
res.append(curA.val)
curA = curA.next
curB = curB.next
return res