标签:item 获取 == 不同 描述 fir 剑指offer public find
1 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {//链表 mytip 2 ListNode p1 = pHead1; 3 ListNode p2 = pHead2; 4 int len1 =0; 5 int len2 = 0; 6 while(p1!=null){//获取长度 7 len1++; 8 p1=p1.next; 9 } 10 while(p2!=null){ 11 len2++; 12 p2= p2.next; 13 } 14 p1 = pHead1; 15 p2 = pHead2; 16 if(len1>len2){//将长的先移动长度差步 17 for(int i=0;i<len1-len2;i++){ 18 p1=p1.next; 19 } 20 } 21 if(len2>len1){ 22 for(int i=0;i<len2-len1;i++){ 23 p2=p2.next; 24 } 25 } 26 while(p1!=null){//两个链表一起迭代,判断当前点是否相同 27 if(p1==p2){ 28 return p1; 29 } 30 p1=p1.next; 31 p2=p2.next; 32 } 33 return null; 34 }
简洁版
1 public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {//链表 mytip 2 ListNode p1 = pHead1; 3 ListNode p2 = pHead2; 4 5 while(p1!=p2){//长度不同,则走了两遍每一个都迭代了一个链表1,一个链表2 6 p1=p1==null?pHead2:p1.next; 7 p2=p2==null?pHead1:p2.next; 8 } 9 10 return p1; 11 }
标签:item 获取 == 不同 描述 fir 剑指offer public find
原文地址:https://www.cnblogs.com/zhacai/p/10711885.html