码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-04-15 18:13:40      阅读:126      评论:0      收藏:0      [点我收藏+]

标签: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     }

 

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

标签:item   获取   ==   不同   描述   fir   剑指offer   public   find   

原文地址:https://www.cnblogs.com/zhacai/p/10711885.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!