首页 > 其他 > 详细

p22 链表的相交节点 (leetcode 160)

时间:2020-03-12 18:05:22      阅读:53      评论:0      收藏:0      [点我收藏+]

一:解题思路

 

二:完整代码示例 (C++版和Java版)

第一种方法C++

class Solution 
 {
 public:
     ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) 
     {
         int lenA = 0,lenB=0;

         for (ListNode* p = headA; p != NULL; p = p->next, lenA++);
         for (ListNode* p = headB; p != NULL; p = p->next, lenB++);

         ListNode* p = headA;
         ListNode* q = headB;

         if (lenA > lenB)
         {
             for (int i = 0; i < lenA - lenB; i++)
             {
                 p = p->next;
             }
         }
         else
         {
             for (int i = 0; i < lenB - lenA; i++)
             {
                 q = q->next;
             }
         }

         while (p != q)
         {
             p = p->next;
             q = q->next;
         }

         return p;
     }
 };

第一种方法Java:

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB)
  {
         int lenA=0,lenB=0;

         for(ListNode p=headA;p!=null;p=p.next,lenA++);
         for(ListNode p=headB;p!=null;p=p.next,lenB++);

         ListNode p=headA;
         ListNode q=headB;

         if(lenA>lenB)
         {
             for(int i=0;i<lenA-lenB;i++)
             {
                 p=p.next;
             }
         }
         else
         {
             for(int i=0;i<lenB-lenA;i++)
             {
                 q=q.next;
             }
         }

         while(q!=p)
         {
             q=q.next;
             p=p.next;
         }

         return p;
  }
}

第二种方法C++:

class Solution 
 {
 public:
     ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) 
     {
         if (headA == NULL || headB == NULL) return NULL;

         ListNode* p = headA;
         ListNode* q = headB;

         while (p != q)
         {
             p = p == NULL ? headB : p = p->next;
             q = q == NULL ? headA : q = q->next;
         }

         return q;
     }
 };

第二种方法Java:

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB)
    {
        if(headA==null||headB==null) return null;
        
        ListNode p=headA;
        ListNode q=headB;
        
        while (p!=q)
        {
            p=p==null?headB:p.next;
            q=q==null?headA:q.next;
        }
        
        return q;
    }
}

 

p22 链表的相交节点 (leetcode 160)

原文:https://www.cnblogs.com/repinkply/p/12470016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!