牛客题霸NC66两个链表的第一个公共节点Java题解

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

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

牛客题霸NC66两个链表的第一个公共节点Java题解
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=117&&tqId=34988&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking
方法:双指针
解题思路:当pHead1==null或pHead2==null时,没有公共节点,返回null。
让node1指向pHead1链表的头节点,node2指向pHead2链表的头节点。然后依次判断每个节点是否相等。当node1到达链表pHead1的末尾时,重新定位到链表pHead2的头节点,当node2到达链表pHead2的末尾时,重新定位到链表pHead1的头节点。这样,当node1和node2相遇时,所指向的节点就是第一个公共节点。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1==null || pHead2==null){
            return null;
        }

        ListNode node1 = pHead1;   //node1指向pHead1头节点
        ListNode node2 = pHead2;   //node2指向pHead2头节点

        while(node1!=node2){       //如果node1不等于node2
            node1 = node1!=null?node1.next:pHead2;  //当node1到达链表pHead1的末尾时,重新定位到链表pHead2的头节点
            node2 = node2!=null?node2.next:pHead1;  //当node2到达链表pHead2的末尾时,重新定位到链表pHead1的头节点
        }

        return node1;    //当node1和node2相遇时,所指向的节点就是第一个公共节点
    }
}
全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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