码迷,mamicode.com
首页 > 其他好文 > 详细

查询两个链表的公共节点

时间:2021-03-16 13:39:17      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:adb   val   node   turn   div   查询   def   loading   lis   

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

如下面的两个链表:

 技术图片

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:

    int GetNumsOfList(ListNode* headA) {
        int nums = 0;
        while (headA != NULL) {
            ++nums;
            headA = headA->next;
        }
        return nums;
    }

    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        int numsA = GetNumsOfList(headA);
        int numsB = GetNumsOfList(headB);
        ListNode* B = headB;
        ListNode* A = headA;
        if (numsB > numsA) {
            int diff = numsB - numsA;
            while (diff --) {
                B = B->next;
            }
        } else if (numsA > numsB) {
            int diff = numsA - numsB;
            while (diff --) {
                A = A->next;
            }
        }
        while (A && B) {
            if (A==B) {
                return A;
            }
            A = A->next;
            B = B->next;
        }
        return NULL;
    }
};

 

查询两个链表的公共节点

标签:adb   val   node   turn   div   查询   def   loading   lis   

原文地址:https://www.cnblogs.com/morningsunlll/p/14533783.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!