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;
        }
    }

 

posted @ 2015-04-10 04:17  世界到处都是小星星  阅读(116)  评论(0编辑  收藏  举报