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

原创 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面试编程题】题目1505:两个链表的第一个公共结点--九度OJ

本题应该非常经典的题目了,但这种题目我们往往有时候需要注意来输入的不止两个链表的情况,但本题目中已经很清晰的说明了只有两个链表。另外,既然是单链表,就不存在有一个节点具有多个指针指向其他节点。 ...

[剑指offer学习心得]之:两个链表的第一个公共结点

题目:输入两个链表,找出它们的第一个公共结点。看到这道题,第一个想到的自然是暴力法:第一链表上顺序遍历每个结点,每遍历到一个结点,在第二个链表上顺序遍历每个结点。如果在第二个链表上有一个结点和第一个链...

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

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

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

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

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

题目描述 输入两个链表,找出它们的第一个公共结点。 思路一:两条相交的链表呈Y型。可以从两条链表尾部同时出发,最后一个相同的结点就是链表的第一个相同的结点。可以利用栈来实现。时...

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

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

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

题目描述: 输入两个链表,找出它们的第一个公共结点。 方法一:分别把两个链表的结点放入两个栈中,这样两个链表的尾结点就位于两个栈的栈顶,接下来比较两个栈顶的结点是否相同。如果相同,则把栈顶弹出...

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

package case37_FindFirstCommonNode; import java.util.Stack; /** * 题目:输入两个链表,找出他们的第一个公共结点。 * * ...

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

/* 两个链表的第一个公共结点: 输入两个链表,找出它们的第一个公共结点。、 分析: 这是数据结构的一道题目。 设长链表长度为L=5, 短链表长度为S = 3, 那么先让长链表走L-S= 2步, 那么...

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

问题:输入两个链表,找出它们的第一个公共结点。链表的结点定义如下:    struct   ListNode  {                   int m_nKe...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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