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

36.两个链表的第一个公共节点。

时间:2019-05-09 21:34:25      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:next   pre   ++   ||   class   思路   --   else   his   

题目描述:

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

思路分析:

??由于链表的指针只能指向一个节点,所以两个链表相交后,后面的部分完全一样。所以我们的解题思路就是先求出两个链表的长度,设置俩个指针分别指向两个链表的头部。指向较长链表的指针先走两个链表长度差步,然后两个指针同时开始走,当两个指针指向同一个节点时,这个节点就是第一个公共节点。

代码:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        if(pHead1==null||pHead2==null)
            return null;
        int len1=0;
        int len2=0;
        ListNode pNode1=pHead1;
        ListNode pNode2=pHead2;
        
        while(pHead1!=null){
            len1++;
            pHead1=pHead1.next;
        }
        while(pHead2!=null){
            len2++;
            pHead2=pHead2.next;
        }
        int n=Math.abs(len1-len2);
        if(len1>len2){
            while(n>0){
                pNode1=pNode1.next;
                n--;
            }
        }else{
            while(n>0){
                pNode2=pNode2.next;
                n--;
            }
        }
        while(pNode1!=pNode2){
            pNode1=pNode1.next;
            pNode2=pNode2.next;
        }
        return pNode1;
 
    }
}

36.两个链表的第一个公共节点。

标签:next   pre   ++   ||   class   思路   --   else   his   

原文地址:https://www.cnblogs.com/yjxyy/p/10841054.html

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