leetcode-160. 相交链表

 

 

/**
 * 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) {
        if(headA==NULL||headB==NULL)
            return NULL;
        int lenA = getlen(headA);
        int lenB = getlen(headB);
        int len = abs(lenA-lenB);
        if(lenA>lenB){
            while(len--){
                headA = headA->next;
            }
        }else if(lenA<lenB){
                while(len--)
                headB = headB->next;
            }
        while(headA&&headB&&headA!=headB){
            headA = headA->next;
            headB = headB->next;
        }
        return headA;
    
    }
    int getlen(ListNode* root){
        int count = 0;
        if(root==NULL)
        return count;
        while(root){
            count++;
            root= root->next;
        }
        return count;
    }
};

 

posted @ 2021-07-21 18:33  三一一一317  阅读(12)  评论(0)    收藏  举报