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

原创 2015年07月07日 19:54:34
package java_study.JianZhiOffer;

import org.junit.Test;

/**
 * Created by ethan on 2015/7/7.
 * 剑指offer No37 两个链表的第一个公共结点
 * 两个思路:1.压栈 2.数出每个链表的长度,并让长链表先走相差的步数。
 * 这里实现的是思路2, 没有经过测试
 */
public class No37两个链表的第一个公共结点 {

    public Node findFirstCommonNode(Node head1, Node head2){
        if (head1==null || head2==null) return null;
        int count_1 = 0;
        int count_2 = 0;
        Node tmp1 = head1;
        Node tmp2 = head2;
        while (tmp1 != null){
            tmp1 = tmp1.getNext();
            count_1++;
        }
        while (tmp2 != null){
            tmp2 = tmp2.getNext();
            count_2++;
        }
        int gap = count_1-count_2;
        if (gap<0){
            for (int i=0; i>gap; i--){
                head2 = head2.getNext();
            }
        }else if(gap>0){
            for (int i=0; i<gap; i++){
                head1 = head1.getNext();
            }
        }
        while (head1!=null){
            if (head1==head2)
                break;
            else {
                head1 = head1.getNext();
                head2 = head2.getNext();
            }
        }
        return head1;
    }

    @Test
    public void test(){

    }
}

剑指offer——面试题37:两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。 【方法一、利用栈】 代码: /* struct ListNode { int val; struct ListNode *next; ListNo...

算法题5 找出两个链表的第一个公共结点

题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode {       int       m_nKey;       ListNode*   m...
  • wcyoot
  • wcyoot
  • 2011年05月17日 11:21
  • 12322

算法-寻找两个链表的第一个公共结点

题目: 输入两个链表,找到他们的第一个公共结点,链表结点定义如下:struct ListNode { int value; ListNode *next; };解题思路: 首先我们需要想...

找出两个链表的第一个公共结点

题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode { int m_nKey; ListNode* ...

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

问题:输入两个链表,找出它们的第一个公共结点。链表的结点定义如下:    struct   ListNode  {                   int m_nKey;           Li...

电话面试:求两个链表的第一个公共结点

求两个链表的第一个公共结点 题目另外一种说法也可以为两个链表第一个交点。首先确定相交在链表上的含义,链表相交意味着某个节点到链表尾都是相同。其实这个问题可以联想到路程相遇问题,如何使得两个链表同时到...
  • huruzun
  • huruzun
  • 2014年03月30日 21:49
  • 680

两个链表的第一个公共结点。。。大腿的精妙程序

题目描述 输入两个链表,找出它们的第一个公共结点。//第一种:我的思路是扔进vector里倒着看 class Solution { public: ListNode* FindFirstCo...

九度 题目1505:两个链表的第一个公共结点

题目来源:http://ac.jobdu.com/problem.php?pid=1505

【剑指offer】之两个链表的第一个公共结点

 题目描述:       输入两个链表,找出它们的第一个公共结点。 分析:      如下图的链表,求出公共的节点6:      java代码实现: ...

找出两个链表的第一个公共结点

题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode {       int       m_nKey;       ListNode*   m...
  • gyy823
  • gyy823
  • 2013年10月21日 00:44
  • 517
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两个链表的第一个公共结点
举报原因:
原因补充:

(最多只允许输入30个字)