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

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

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

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

    ListNode(int val) {
        this.val = val;
    }
}*/
/**我是最近才练开的算法题,但是对于这道题我不太能理解,既然是单向链表,为什么在单向遍历结束后,再返回首节点呢
解题思路
1.设置两个节点l1,l2,为的是对节点进行遍历
2.在循环中对l1与l2做出判断,并对l1与l2的节点设置变更逻辑(如若下一个节点为空则到另一条链表的头节点),相同即可跳出循环,不同则一直循环
*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode l1 = pHead1;
        ListNode l2 = pHead2;
	  //------------------------------------以上为第一部分-----------------------------------
        while(l1 != l2){
            l1 = (l1 == null) ? pHead2:l1.next;
            l2 = (l2 == null) ? pHead1:l2.next;
        }
	  //------------------------------------以上为第二部分-----------------------------------
        return l1;//此处既可返回l1也可返回l2,因为相同
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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