Intersection of Two Linked Lists--LeetCode

来源:互联网 发布:趋势波段买卖指标源码 编辑:程序博客网 时间:2024/06/17 19:47

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.

找第一个相遇的节点,看哪个长,然后往前走几个节点,继续查看您能够相等

List* getIntersectionNode(List* first,List* second){      if(first == NULL)       return second;      if(second == NULL)       return first;      List* headA= first;      List* headB = second;      int lenA=0,lenB=0;      while(headA != NULL)      {        lenA++;        headA = headA->next;                  }      while(headB != NULL)      {        lenB++;        headB = headB->next;                  }      headA = first;      headB = second;            if(lenB > lenA)      {         while(lenA !=lenB)         {            headA = headA->next;            lenA++;         }      }      else if(lenA > lenB)      {         while(lenA != lenB)         {            headB = headB->next;            lenB++;                    }      }            while(headA != NULL && headB !=NULL)      {         if(headA == headB)           return headA;         else         {             headA = headA->next;             headB = headB->next;         }      }      return NULL;      }



0 0
原创粉丝点击