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

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

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

stack解法:
两个链表先分别进栈
再依次出栈,从后向前遍历遇到第一个不相等的节点
返回上一个相同节点即可
class Solution {
public:
    ListNode* FindFirstCommonNode(ListNode* pHead1,ListNode* pHead2) {
        ListNode* res = NULL;
        if(!pHead1 || !pHead2)
            return res;
        stack<ListNode*> stack1;
        stack<ListNode*> stack2;
        while(pHead1){
            stack1.push(pHead1);
            pHead1 = pHead1->next;
        }
        while(pHead2){
            stack2.push(pHead2);
            pHead2 = pHead2->next;
        }
        if(stack1.top() != stack2.top())
            return res;
        while(stack1.size() != 0 && stack2.size() != 0){
            res = stack1.top();
            stack1.pop();
            stack2.pop();
            if(!stack1.empty() && !stack2.empty() && stack1.top() != stack2.top())
                return res;
        }
        return res;
    }
};


全部评论

相关推荐

求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
05-14 20:34
门头沟学院 Java
窝补药贝八股:管他们,乱说,反正又不去,直接说680
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务