两个链表的公共节点(让链表等长,遍历两个表头)

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

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

/*
你要做的事情是 写代码
增加链表长度使A,B两个链表长度相同。
A+B = B+A 。
多遍历一次链表。从A链表开始遍历完后遍历B链表
同理B链表 遍历完后遍历A链表。
直到找到同一个指针。
*/
class Solution {
public:
    ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {
       ListNode *p1 = pHead1, *p2 = pHead2;
       while(p1 != p2){
           if(!p1) p1 = pHead2;
           else  p1 = p1->next;
           p2 = p2?p2->next:pHead1; // 当指针为空时,该从另一个链表表头遍历。
       }
        return p1;
    }
};
全部评论

相关推荐

牛至超人:把哈工大,再加大加粗,看见闪闪发光的哈工大字样,面试官直接流口水
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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