标签:
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
./** * 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) { //注意,求长度时,可以利用尾节点是否相等进行剪枝,因此需要注意尾节点不能为null if(headA==null||headB==null) return null; int lenA=1; ListNode pA=headA; while(pA.next!=null){//判断条件,需要利用尾节点 lenA++; pA=pA.next; } int lenB=1; ListNode pB=headB; while(pB.next!=null){ lenB++; pB=pB.next; } if(pA!=pB) return null;//// pA=headA;//// pB=headB; if(lenA>lenB){ int step=lenA-lenB; for(;step>0;step--){ pA=pA.next; } } if(lenB>lenA){ int step=lenB-lenA; for(;step>0;step--){ pB=pB.next; } } while(pA!=null){ if(pA==pB) return pA; pA=pA.next; pB=pB.next; } return null; } }
[leedcode 160] Intersection of Two Linked Lists
标签:
原文地址:http://www.cnblogs.com/qiaomu/p/4694836.html