编写一个程序,找到两个单链表相交的起始节点。
如下面的两个链表:
在节点 c1 开始相交
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode NodeA = headA , NodeB = headB, returnNode = null; int numA = 0, numB = 0, tmp = 0; while(NodeA != null) { numA++; NodeA = NodeA.next; } while(NodeB != null) { numB++; NodeB = NodeB.next; } if(numA > numB) { tmp = numA - numB; while(tmp > 0) { headA = headA.next; tmp--; } while(headA != null) { if(headA == headB) { returnNode = headA; return returnNode; } headA = headA.next; headB = headB.next; } } else { tmp = numB - numA; while(tmp > 0) { headB = headB.next; tmp--; } while(headB != null) { if(headB == headA) { returnNode = headB; return returnNode; } headB = headB.next; headA = headA.next; } } return returnNode; } }