找出两个链表的公共部分的起始位置

题目

a1-a2-c1-c2-c3
b1-b2-b3-c1-c2-c3

思路

第一种方法,找出两个链表的长度差,然后让长的那个先跑,然后两个在一起跑。
第二种方法,a跑完在以b去跑,同理B跑完以A去跑,当A=B时,则说明找到了公共点

代码

def getcommonnode(l1,l2):
  curA = l1.head
  curB = l2.head
  lenA = 0
  lenB = 0
  while curA is not None:
    curA = curA.next
    lenA += 1
  while curB is not None:
    curB = curB.next
    lenB += 1
  curA,curB = l1.head,l2.head
  if lenA>lenB:
    for i in range(lenA-lenB):
      curA = curA.next
  elif lenB>lenA:
    for i in range(lenB-lenA):
      curB = curB.next
  while curA != curB:
    curA = curA.next
    curB = curB.next
  return curA
def getcommonnode(l1,l2):
  A,B = l1.head,l2.head
  while A!=B:
    A = A.next if A else l2.head
    B = B.next if B else l1.head
  return A
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值