题目:
找到两个单链表相交的起始节点;
比如:
从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
}