Intersection of Two Linked Lists

原题解法超屌: ref  http://blog.csdn.net/u012162613/article/details/41560337

 

  public ListNode getIntersectionNode(ListNode headA, ListNode headB) {

        if(headA==null||headB==null) return null;

        //http://www.cnblogs.com/yuzhangcmu/p/4128794.html

        // 看似算法不难,但是想要写对必须得简化思路,亦即是说

        // A

        // 。。。。

        //       B 这种情况,要保证B马上跳的到跟A相同的位置,注意这里把一样的那些个路径啊,多余的路径全简略了

        

        ListNode pa = headA, pb = headB ;

        ListNode tailA =null, tailB = null;

        

        while(true){

            if(pa==null) pa = headB;

            if(pb==null) pb= headA;

            

            if(pa.next==null){

                tailA = pa; 

            } 

            if(pb.next==null){

                tailB = pb; 

            }

            

            if( tailA!=null && tailB!=null && tailA!=tailB) return null;

            if(pa==pb) return pa;

            pa = pa.next;

            pb = pb.next;

        }

    }

 

你可能感兴趣的:(intersect)