剑指offer 37---求两个链表的第一个公共结点
来源:互联网 发布:误会 知乎 编辑:程序博客网 时间:2024/05/22 05:10
求两个链表的第一个公共结点
思路:(假设链表不带环)
此处求解的是两个单链表,如果两个单向链表有公共的结点,那么这两个链表从某一结点开始,它们的_next都指向同一结点。由于是单链表的结点,每个结点只有一个_next,因此从第一个公共结点开始,之后它们所有的结点都是重合的,不可能再出现分叉。所以两个有公共结点而部分重合的链表,拓扑形状像一个Y,而不可能是X
struct ListNode{ int _value; ListNode* _next; ListNode(const int& value) :_value(value) , _next(NULL) {}};//求两个链表的第一个公共结点ListNode* FirstCommonNode(ListNode* pHead1, ListNode* pHead2){if (pHead1 == NULL || pHead2 == NULL){return NULL;}ListNode* longList = pHead1;ListNode* shortList = pHead2;ListNode* cur1 = pHead1;ListNode* cur2 = pHead2;int len1 = 0;int len2 = 0;while (cur1){cur1 = cur1->_next;len1++;}while (cur2){cur2 = cur2->_next;len2++;}int k = 0;if (len1 > len2){k = len1 - len2;}else{k = len2 - len1;longList = pHead2;shortList = pHead1;}while (k--){longList = longList->_next;}while ((longList != NULL) && (shortList != NULL)){if (longList == shortList){return shortList;}else{longList = longList->_next;shortList = shortList->_next;}}return NULL;}
阅读全文
1 1
- 剑指offer 37---求两个链表的第一个公共结点
- 【剑指offer】两个链表的第一个公共结点
- 剑指offer--两个链表的第一个公共结点
- 《剑指offer》两个链表的第一个公共结点
- 剑指offer 两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- [剑指offer]两个链表的第一个公共结点
- 剑指offer---两个链表的第一个公共结点
- 剑指offer|两个链表的第一个公共结点
- 剑指offer-两个链表的第一个公共结点
- 《剑指offer》-两个链表的第一个公共结点
- 剑指Offer: 两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- 剑指offer 两个链表的第一个公共结点
- 剑指offer--两个链表的第一个公共结点
- 剑指offer:两个链表的第一个公共结点
- 剑指Offer------两个链表的第一个公共结点
- 剑指offer--两个链表的第一个公共结点
- 数据结构小结——顺序表(数组版)
- 【设计模式】反射+配置文件
- Vim 文本对象指南 (2)
- 缓存框架 ASimpleCache 源码分析地址收藏
- java 集合(list、set、map)的特点 集合相关的类有一大堆
- 剑指offer 37---求两个链表的第一个公共结点
- HDU1864 最大报销费用(01背包)
- Hello World!
- 线性方法求欧拉数-POJ2478
- 机器学习常见算法汇总
- JQuery实现的简单城市间二级联动
- 微分方程建模实例:对药剂量开处方
- linux下jdk安装
- 机器学习中常见的几种归一化方法以及原因