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

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

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

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 * };
 */

/**
 *
 * @param pHead1 ListNode类
 * @param pHead2 ListNode类
 * @return ListNode类
 */
struct ListNode* FindFirstCommonNode(struct ListNode* pHead1,
                                     struct ListNode* pHead2 ) {
    // write code here
    struct ListNode *node1 = pHead1;
    struct ListNode *node2 = pHead2;
    struct ListNode *head = NULL;

    if (!node1 || !node2)
        return NULL;
    while(node1) {
        node1->val |= 1 << 20;
        node1 = node1->next;
    }
    while(node2) {
        if ((node2->val >> 20) & 0x1) {
            if (!head)
                head = node2;
            node2->val &= ~(1 << 20);
        }
        node2 = node2->next;
    }
    node1 = pHead1;
    while(node1) {
        node1->val &= ~(1 << 20);
        node1 = node1->next;
    }
    return head;
}

全部评论

相关推荐

02-26 15:33
已编辑
西北大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务