链表 5.6-打印链表公共值

题目:

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。

给定两个链表的头指针headAheadB,请返回一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值