题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
/* 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; } int len1 = 0, len2 = 0; //这里需要定义两个临时的头节点,不能直接使用pHead1和pHead2。 ListNode tmp1 = pHead1, tmp2 = pHead2; while(tmp1 != null){ tmp1 = tmp1.next; len1++; } while(tmp2 != null){ tmp2 = tmp2.next; len2++; } if(len1 > len2){ //pHead1要长一些。 for(int i = 0; i < len1 - len2; i++){ pHead1 = pHead1.next; } }else{ //pHead2要长一些 for(int i = 0; i < len2 - len1; i++){ pHead2 = pHead2.next; } } while(pHead1 != null && pHead2 != null){ if(pHead1 == pHead2){ return pHead1; } pHead1 = pHead1.next; pHead2 = pHead2.next; } return null; } }#学习##刷题##每日刷题#