剑指offer链表第一个公共子结点

Posted singular

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer链表第一个公共子结点相关的知识,希望对你有一定的参考价值。

*思路: 先求得两个链表的长度,然后得到长度差diff,再先遍历长链表diff步后,再同时遍历两个链表并比较对象指针。

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
12       if(pHead1==null||pHead2==null) 
13         {return null;}
14       ListNode temp1 = pHead1;
15       ListNode temp2 = pHead2;
16       int length1=0;
17       int length2=0;
18       while(temp1!=null){
19           length1++;
20           temp1 = temp1.next;
21       }
22       while(temp2!=null){
23           length2++;
24           temp2 = temp2.next;
25       }
26       int diff= Math.abs(length1-length2);
27       if(length1>=length2){
28           for(int i=0; i<diff; i++){
29               pHead1 = pHead1.next;
30           }
31       }else{
32           for(int i=0; i<diff; i++){
33               pHead2 = pHead2.next;
34           }
35       }
36       while(pHead1!=pHead2){
37           pHead1 = pHead1.next;
38           pHead2 = pHead2.next;
39       }
40 
41       return pHead1;
42       
43     }
44 }

 

以上是关于剑指offer链表第一个公共子结点的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer - 两个链表第一个公共节点

剑指offer36 两个链表的第一个公共子节点

剑指offer两个链表的第一个公共结点

剑指offer--44.两个链表的第一个公共结点

剑指Offer 两个链表的第一个公共结点

剑指offer 36.时间空间效率的平衡两个链表的第一个公共结点