题目:

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

当不存在公共节点时,返回空节点。

数据范围

链表长度 [1,2000]。

保证两个链表不完全相同,即两链表的头结点不相同。

样例

 给出两个链表如下所示:
 A:        a1 → a2
                   
                      c1 → c2 → c3
                               
 B:     b1 → b2 → b3
 ​
 输出第一个公共节点c1

算法思想:假设公共部分长度为c,A链非公共部分长度为a,b非公部分长度为b。假设有两个指针p1与p2,p1移动途径为a->c->b(从a开始遍历链表A,结束后再从B的链头开始遍历b。同步的p2移动途径为b->c->a(从b开始遍历链表B,结束后再从A的链头开始遍历a。可以看到两者最后的移动距离都是a+b+c,此时必然会相遇。)

 /**
  * Definition for singly-linked list.
  * struct ListNode {
  *     int val;
  *     struct ListNode *next;
  * };
  */
 struct ListNode *findFirstCommonNode(struct ListNode *headA, struct ListNode *headB) {
     struct ListNode *q,*p;
     q = headB;
     p = headA;
     while (p != q)
    {
         if (p)
        {
             p = (*p).next;
        }
         else{
             p = headB;
        }
         if (q)
        {
             q = (*q).next;
        }
         else{
             q = headA;
        }
    }
     return p;
     
 }

最新文章

  1. Spring+SpringMvc+Mybatis框架集成搭建教程二(依赖配置及框架整合)
  2. hive 普通创建表和跟新列操作
  3. 下载包含src,tgz,zip的文件
  4. HDU 4998 (点的旋转) Rotate
  5. 让sublime text 3默认新建GBK文件
  6. iOS之XIB拖拽scrollView
  7. Python里的map、reduce、filter、lambda、列表推导式
  8. C#调用API函数EnumWindows枚举窗口的方法
  9. stringstream clear()的疑问 - yuanshuilee的日志 - 网易博客
  10. windows下apache如何完整卸载?
  11. 【BZOJ 3754】: Tree之最小方差树
  12. luogu P5322 [BJOI2019]排兵布阵
  13. Unity 常用插件1
  14. 喵哈哈村的魔法考试 Round #19 (Div.2) 题解
  15. Js实现页面关键字高亮显示
  16. 【刷题】BZOJ 4000 [TJOI2015]棋盘
  17. web网页上面调用qq
  18. 反爬虫破解系列-汽车之家利用css样式替换文字破解方法
  19. font:12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif详解
  20. Week Five

热门文章

  1. CSS入门学习笔记
  2. go语言的结构体、指针、方法详解
  3. centos7下的apache2.4安全配置
  4. linux清除恶意程序流程-kdevtmpfsi清除
  5. 公式b-(a-b)
  6. git常用命令与AndroidStudio常用快捷键
  7. c#获取当前进程使用内存
  8. javaProject
  9. ArrayList集合的方法
  10. 【剑指Offer】【链表】反转链表