剑指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链表第一个公共子结点的主要内容,如果未能解决你的问题,请参考以下文章