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

36两个链表的第一个公共结点

时间:2018-01-01 18:20:21      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:ret   nod   body   输出   链表   第一个公共结点   list   描述   post   

 

题目描述

输入两个链表,找出它们的第一个公共结点。

思路1:
首次遍历:算出2个链表的长度l1,l2。
第二次遍历,长的链表先走|l2-l1|步,然后2个链表同时遍历,找到第一个相同的节点输出。

 1 public class Solution {
 2     public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
 3          int l1 = 0,l2 = 0,ldiff=0;
 4         ListNode longp,shortp;
 5         
 6         // 得到长度
 7         for(ListNode p = pHead1;p!=null;p=p.next)
 8             l1++;
 9         for(ListNode p = pHead2;p!=null;p=p.next)
10             l2++;
11         if(l1>l2){
12             ldiff = l1-l2;
13             longp=pHead1;shortp = pHead2;
14         }
15            else{
16              ldiff = l2-l1;
17             longp=pHead2;shortp = pHead1;
18         }
19         //长链表先走
20         for(int i = 0;i<ldiff;i++){
21             longp = longp.next;
22         }
23         //2个链表同时遍历
24         while(longp!=null){
25             if(longp.val==shortp.val) return longp;
26             longp = longp.next;
27             shortp = shortp.next;
28             
29         }
30         return null; 
31     }
32 }

 

36两个链表的第一个公共结点

标签:ret   nod   body   输出   链表   第一个公共结点   list   描述   post   

原文地址:https://www.cnblogs.com/zle1992/p/8167741.html

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