题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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,因为相同
}
}
