zoukankan      html  css  js  c++  java
  • 【剑指Offer面试编程题】题目1505:两个链表的第一个公共结点--九度OJ

    题目描述:

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

    输入:

    输入可能包含多个测试样例。
    对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的两个链表的元素的个数。
    接下来的两行,第一行为第一个链表的所有元素,中间用空格隔开。第二行为第二个链表的所有元素,中间用空格隔开。

    输出:

    对应每个测试案例,
    输出两个链表的第一个公共结点的值。
    如果两个链表没有公共结点,则输出“My God”。

    样例输入:

    5 4
    1 2 3 6 7
    4 5 6 7
    3 3
    1 5 7
    2 4 7
    2 3
    1 3
    4 5 6
    样例输出:

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

         那么本题还是采用经典的尾部对齐的做法,使两个链表尾部对齐后,两个链表同时开始向后扫描,若发现有一个元素值相同则表明两个链表具有相同的节点,后面的节点也就不同扫描了。若扫描完所有的节点都没有找到相同的节点,则表明两个链表不具有共同元素。

    AC code:

    #include <cstdio>
    #include <vector>
    #include <algorithm>
    using namespace std;
     
    int main()
    {
      int m,n;
      vector<int> mm(1002),nn(1002);
      while(scanf("%d%d",&m,&n)!=EOF)
      {
        if(m>n)
        {
          for(int i=0;i<m;++i)
            scanf("%d",&mm[i]);
          for(int i=0;i<n;++i)
            scanf("%d",&nn[i]);
        }else
        {
          for(int i=0;i<m;++i)
            scanf("%d",&nn[i]);
          for(int i=0;i<n;++i)
            scanf("%d",&mm[i]);
          swap(m,n);
        }
        int midx=m-n,nidx=0;
        bool flg=true;
        while(nidx<n)
          if(mm[midx++]==nn[nidx++]){printf("%d
    ",nn[nidx-1]);flg=false; break;}
        if(flg)printf("My God
    ");
      }
      return 0;
    }
    /**************************************************************
        Problem: 1505
        User: huo_yao
        Language: C++
        Result: Accepted
        Time:70 ms
        Memory:1024 kb
    ****************************************************************/

    题目链接:http://ac.jobdu.com/problem.php?pid=1505

    九度-剑指Offer习题全套答案下载:http://download.csdn.net/detail/huoyaotl123/8276299




  • 相关阅读:
    Java IO流学习总结
    wpf 右键ListBox可编辑
    silverlight 独立存储之路径、保存图片、扩展空间注意事项
    自定义wpf的MessageBox(可重定义button键文字)
    细数各大顶级网站的垃圾设置!!!
    无法为 SSL/TLS 安全通道与颁发机构“*****”建立信任关系。
    JS完美运动框架
    修改thinkphp缩略图源码 生成固定的缩略图
    20120609 随笔
    php 图片处理函数
  • 原文地址:https://www.cnblogs.com/huoyao/p/4248884.html
Copyright © 2011-2022 走看看