剑指 Offer 52. 两个链表的第一个公共节点 力扣(简单) 链表联系题

题目描述:

输入两个链表,找出它们的第一个公共节点。

如下面的两个链表:

 

 在节点 c1 开始相交。

题源:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
      ListNode* t=headA;
      int la=0;
      while(t!=NULL) 
      {
          la++;
          t=t->next;
      }
      int lb=0;
      t=headB;
      while(t!=NULL)
      {
          lb++;
          t=t->next;
      }
      if(la<lb) {swap(headA,headB); swap(la,lb);}
      for(int i=0;i<la-lb;i++)  headA=headA->next;
      while(headA!=NULL)
      {
          if (headA==headB)  break;
          headA=headA->next;
          headB=headB->next;
      }
      return headA;
    }
};
原文地址:https://www.cnblogs.com/stepping/p/15041187.html