标签:
Write a program to find the node at which the intersection of two singly linked lists begins.
For example, the following two linked lists:
A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3
begin to intersect at node c1.
Notes:
null
.直接上代码:
1 public ListNode getIntersectionNode(ListNode headA, ListNode headB) { 2 int lenA = getLength(headA); 3 int lenB = getLength(headB); 4 ListNode curA = headA; 5 ListNode curB = headB; 6 int count = lenA > lenB ? lenA - lenB : lenB - lenA; 7 if (lenA > lenB) { 8 for (int i = 0; i < count; i++) { 9 curA = curA.next; 10 } 11 }else{ 12 for (int i = 0; i< count; i++) { 13 curB = curB.next; 14 } 15 } 16 while (curA != null && curB != null) { 17 if (curA.val == curB.val) { 18 return curA; 19 } 20 curA = curA.next; 21 curB = curB.next; 22 } 23 return null; 24 } 25 26 private int getLength(ListNode head) { 27 ListNode dummy = new ListNode(0); 28 ListNode cur = dummy; 29 dummy.next = head; 30 int count = 0; 31 while (cur != null) { 32 cur = cur.next; 33 count++; 34 } 35 return count; 36 }
Intersection of Two Linked Lists
标签:
原文地址:http://www.cnblogs.com/gonuts/p/4647894.html