判断两个链表相交的起始节点

题目:
找到两个单链表相交的起始节点;
比如:
在这里插入图片描述
从c1开始相交:

输入: listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], 
输出: 8

思路:

  • 首先对于传入的A链、B链判断不能为nil;
  • 只要两个节点不相等就循环,知道找到相等的那个节点
  • A、B每次都是走一步,走到头会延续对方的路走,这样他们走的路就是相同的;只要不是平行,必然可以找到那个相交的节点;

代码:

type ListNode struct {
      Val int
      Next *ListNode
  }
func getIntersectionNode(headA, headB *ListNode) *ListNode {
    if headA==nil || headB==nil{
        return nil
    }
    a:=headA
    b:=headB
    for a!=b{
        if a==nil{
            a=headB
        }else{
            a=a.Next
        }
        if b==nil{
            b=headA
        }else{
            b=b.Next
        }
    }
   return a
}

猜你喜欢

转载自blog.csdn.net/wzb_wzt/article/details/107768179