题目描述

输入两个链表,找出它们的第一个公共结点。链表结点定义如下:

题目分析

剑指Offer(纪念版)P193 思路三

代码实现

ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2)
{// 得到两个链表的长度unsigned int nLength1 = GetListLength(pHead1);unsigned int nLength2 = GetListLength(pHead2);int nLengthDif = nLength1 - nLength2;ListNode* pListHeadLong = pHead1;ListNode* pListHeadShort = pHead2;if(nLength2 > nLength1){pListHeadLong = pHead2;pListHeadShort = pHead1;nLengthDif = nLength2 - nLength1;}// 先在长链表上走几步,再同时在两个链表上遍历for(int i = 0; i < nLengthDif; ++ i)pListHeadLong = pListHeadLong->m_pNext;while((pListHeadLong != NULL) && (pListHeadShort != NULL) &&(pListHeadLong != pListHeadShort)){pListHeadLong = pListHeadLong->m_pNext;pListHeadShort = pListHeadShort->m_pNext;}// 得到第一个公共结点ListNode* pFisrtCommonNode = pListHeadLong;return pFisrtCommonNode;
}unsigned int GetListLength(ListNode* pHead)
{unsigned int nLength = 0;ListNode* pNode = pHead;while(pNode != NULL){++ nLength;pNode = pNode->m_pNext;}return nLength;
}

  

转载于:https://www.cnblogs.com/xwz0528/p/4896147.html

面试题37:两个链表的第一个公共结点相关推荐

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

    题目描述 输入两个链表,找出它们的第一个公共结点. /* struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), ...

  2. 37. 两个链表的第一个公共结点

    为什么80%的码农都做不了架构师?>>>    题目:输入两个链表,找出它们的第一个公共结点. 思路:先遍历两个链表得出它们各自的长度,然后让长链表先走,直到长度和短的一致,然后两个 ...

  3. 微软面试题之两个链表的第一个公共结点

    问题描述:给定两个单向链表,找出它们的第一个公共节点.链表的节点定义如下: struct ListNode {int m_nKey;ListNode* m_pNext; }; 思路: 如果两个单向链表 ...

  4. 【剑指offer-Java版】37两个链表的第一个公共结点

    两个链表中的第一个公共顶点: 解法一:两次遍历即可 第一次遍历找到两个链表的长度,求出差值k,然后较长的:链表先走k步,之后两个链表同时走,直到遇到第一个相同的结点为止 解法二:辅助栈,先顺序遍历并将 ...

  5. [剑指offer]面试题37:两个链表的第一个公共结点

    面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...

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

    剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...

  7. [转] 程序员面试题精选100题(35)-找出两个链表的第一个公共结点

    [转] http://hi.baidu.com/evrest/blog/item/bb9365fc7569378ab801a059.html 题目:两个单向链表,找出它们的第一个公共结点. 链表的结点 ...

  8. 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点

    一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...

  9. 牛客题霸 [两个链表的第一个公共结点] C++题解/答案

    牛客题霸 [两个链表的第一个公共结点] C++题解/答案 题目描述 输入两个链表,找出它们的第一个公共结点.(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) ...

  10. 求两个链表的第一个公共结点各种情况及三种思路分析

    转自:http://blog.csdn.net/ssopp24/article/details/72377184 1.寻找两个链表的第一个公共结//这道题可以有很多种思路, 我们按照, 有坏到好的顺序 ...

最新文章

  1. Android 中View的绘制机制源代码分析 三
  2. 杨森翔的书法:正月十六试笔【圆光、斗方】
  3. mysql 5.1.60.tar.gz_linux下安装mysql-5.1.51.tar.gz
  4. Keep-Alive模式
  5. OTNM2000 Server端安装
  6. Java NIO ———— Buffer 缓冲区详解
  7. statsmodels学习——使用多元回归拟合数据
  8. “别了,小黄文” 微信打击低俗小说:2019年处理违规账号6.6万+
  9. 一种PLC RS485 Modbus RTU无线联网的解决方案
  10. Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)
  11. java考试系统_Java实现在线考试系统与设计(学生功能)
  12. [MacOS 10.15.5 ] building for macOS-x86_64 but attempting to link with file built for macOS-x86
  13. 医院计算机网络信息安全与管理,医院信息安全管理制度网络版(全文完整版)...
  14. Zoj 3527 Shinryaku! Kero Musume (DP_章鱼图上的树形DP)
  15. 沁恒微USB蓝牙单片机CH573F初步熟悉
  16. MYSQL 视图 触发器 存储过程 事务 索引
  17. 程序员制作epub电子书
  18. vim安装使用pathogen
  19. php后端经历,后端学习路线,仅供参考,个人总结
  20. linux基础——信号阻塞及未决信号

热门文章

  1. Android数据之Json解析
  2. 全连接where 取最新日期_SQL学习笔记(4)——集合、连接与窗口函数
  3. 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...
  4. python操作mongodb语法_python 操作MongoDB
  5. 伪代码的简单例子_使用策略+工厂模式彻底干掉代码中的if else!
  6. mysql 安装 菜鸟_mysql安装
  7. docker 容器安装conposer_docker学习笔记(二)docker-composer
  8. AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  9. 公众号获取用户手机号_小程序中如何获取微信用户绑定的手机号
  10. java类验证和装载顺序_java类加载机制,你会了吗?