160.相交链表
题目
编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
在节点 c1 开始相交。
示例 1:
1 | 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 |
示例 2:
1 | 输入:intersectVal = 2, listA = [0,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1 |
示例 3:
1 | 输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2 |
思路
要判断两个链表是否有交点的难点在于,由于两条链表的长度不一样,所以无法简单的做到一一比较,因此解题思路就是先将两个链表的起始长度设置为一样,然后逐个比较.
代码
先实现一个计算链表长度的函数:
1 | public int CountNode(ListNode list) |
1 | public ListNode GetIntersectionNode(ListNode headA, ListNode headB) |