题解 | #两个链表的第一个公共结点#

两个链表的第一个公共结点

http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46

先计算两个链表的长度sz1, sz2,然后将较长的链表遍历到abs(sz1-sz2)的位置,然后逐一比较,相等则直接返回该节点

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
        if(pHead1==pHead2) return pHead1;
        ListNode* temp1 = pHead1, *temp2 = pHead2, *pmax, *pmin;
        int sz1=0, sz2=0, min=0, max=0, idx=0;
        while(temp1){
            sz1++;
            temp1 = temp1->next;
        }
        while(temp2){
            sz2++;
            temp2 = temp2->next;
        }
        min = sz1<sz2?sz1:sz2;
        max = sz1>=sz2?sz1:sz2;

        pmax = sz1>=sz2?pHead1:pHead2;
        pmin = sz1<sz2?pHead1:pHead2;

        while(idx++<max-min) pmax = pmax->next;
        
        idx = 0;
        while(idx++<min){
            if(pmax==pmin) return pmax;
            pmin = pmin->next;
            pmax = pmax->next;
        }
        
        return nullptr;
        
       
    }
};

全部评论

相关推荐

04-03 18:59
吉林大学 Java
大专人陈义:别投了,我看到有人点了第二个链接投递,还没退出界面,不合适的邮件就发过来了
点赞 评论 收藏
分享
03-29 17:05
门头沟学院 Java
asdasdasda...:我前段时间找工作焦虑,有几天连续熬夜熬穿了,然后心脏突然不舒服,立马躺床上睡觉了,然后第二天还是不舒服,去看医生说是心率不齐,吓得我后面天天早早睡觉,调养身体,过了好几天才好过来。所以真的,工作这些东西哪有那么重要,最多钱多一点钱少一点,降低物欲。活着才是最重要的,现在想想真的后怕
如何排解工作中的焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务