import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
//如果pHead1和pHead2都为空,公共的节点就是null
if(pHead1 == null || pHead2 == null) {
return null;
}
//定义两个指针l1和l2
ListNode l1 = pHead1;
ListNode l2 = pHead2;
//判断l1能走完链表的同时也一定是l2能走完链表,才会存在公共节点
while (l1 != l2) {
//如果l1为空返回为pHead2,否则就继续指向下一个节点
l1 = (l1 == null) ? pHead2 : l1.next;
//如果l2为空返回为pHead1,否则就继续指向下一个节点
l2 = (l2 == null) ? pHead1 : l2.next;
}
//while循环结束说明l1跟l2相遇了,返回l1就行
return l1;
}
}
BM10 两个链表的第一个公共结点(双指针遍历思想)
最新推荐文章于 2024-06-12 16:00:39 发布