面试题37:两个链表的第一个公共结点
题目描述
输入两个链表,找出它们的第一个公共结点。链表结点定义如下:
题目分析
剑指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:两个链表的第一个公共结点相关推荐
- 剑指offer面试题[37]-两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点. /* struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), ...
- 37. 两个链表的第一个公共结点
为什么80%的码农都做不了架构师?>>> 题目:输入两个链表,找出它们的第一个公共结点. 思路:先遍历两个链表得出它们各自的长度,然后让长链表先走,直到长度和短的一致,然后两个 ...
- 微软面试题之两个链表的第一个公共结点
问题描述:给定两个单向链表,找出它们的第一个公共节点.链表的节点定义如下: struct ListNode {int m_nKey;ListNode* m_pNext; }; 思路: 如果两个单向链表 ...
- 【剑指offer-Java版】37两个链表的第一个公共结点
两个链表中的第一个公共顶点: 解法一:两次遍历即可 第一次遍历找到两个链表的长度,求出差值k,然后较长的:链表先走k步,之后两个链表同时走,直到遇到第一个相同的结点为止 解法二:辅助栈,先顺序遍历并将 ...
- [剑指offer]面试题37:两个链表的第一个公共结点
面试题37:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点.链表结点定义如下: struct ListNode {int val;ListNode *next;ListNode ...
- 剑指offer——面试题37:两个链表的第一个公共结点
剑指offer--面试题37:两个链表的第一个公共结点 20180906整理 Solution1: 时间复杂度为O(n2)O(n2)O(n^2)的垃圾算法 /* struct ListNode {in ...
- [转] 程序员面试题精选100题(35)-找出两个链表的第一个公共结点
[转] http://hi.baidu.com/evrest/blog/item/bb9365fc7569378ab801a059.html 题目:两个单向链表,找出它们的第一个公共结点. 链表的结点 ...
- 《剑指offer》-- 两个链表的第一个公共结点、链表中环的入口结点、删除链表中的重复结点
一.两个链表的第一个公共结点: 1.题目: 输入两个链表,找出它们的第一个公共结点. 2.解题思路: (1)第一种:找出两个链表的长度,然后让长的链表先走两个链表的长度差,接着两个链表一起走. (2) ...
- 牛客题霸 [两个链表的第一个公共结点] C++题解/答案
牛客题霸 [两个链表的第一个公共结点] C++题解/答案 题目描述 输入两个链表,找出它们的第一个公共结点.(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) ...
- 求两个链表的第一个公共结点各种情况及三种思路分析
转自:http://blog.csdn.net/ssopp24/article/details/72377184 1.寻找两个链表的第一个公共结//这道题可以有很多种思路, 我们按照, 有坏到好的顺序 ...
最新文章
- Android 中View的绘制机制源代码分析 三
- 杨森翔的书法:正月十六试笔【圆光、斗方】
- mysql 5.1.60.tar.gz_linux下安装mysql-5.1.51.tar.gz
- Keep-Alive模式
- OTNM2000 Server端安装
- Java NIO ———— Buffer 缓冲区详解
- statsmodels学习——使用多元回归拟合数据
- “别了,小黄文” 微信打击低俗小说:2019年处理违规账号6.6万+
- 一种PLC RS485 Modbus RTU无线联网的解决方案
- Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)
- java考试系统_Java实现在线考试系统与设计(学生功能)
- [MacOS 10.15.5 ] building for macOS-x86_64 but attempting to link with file built for macOS-x86
- 医院计算机网络信息安全与管理,医院信息安全管理制度网络版(全文完整版)...
- Zoj 3527 Shinryaku! Kero Musume (DP_章鱼图上的树形DP)
- 沁恒微USB蓝牙单片机CH573F初步熟悉
- MYSQL 视图 触发器 存储过程 事务 索引
- 程序员制作epub电子书
- vim安装使用pathogen
- php后端经历,后端学习路线,仅供参考,个人总结
- linux基础——信号阻塞及未决信号
热门文章
- Android数据之Json解析
- 全连接where 取最新日期_SQL学习笔记(4)——集合、连接与窗口函数
- 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...
- python操作mongodb语法_python 操作MongoDB
- 伪代码的简单例子_使用策略+工厂模式彻底干掉代码中的if else!
- mysql 安装 菜鸟_mysql安装
- docker 容器安装conposer_docker学习笔记(二)docker-composer
- AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
- 公众号获取用户手机号_小程序中如何获取微信用户绑定的手机号
- java类验证和装载顺序_java类加载机制,你会了吗?