剑指offer面试题[37]-两个链表的第一个公共结点
来源:互联网 发布:php网站开发入门 编辑:程序博客网 时间:2024/06/15 10:35
题目描述
输入两个链表,找出它们的第一个公共结点。
/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*///思路://如果两个链表有公共结点,那么两个第一个公共结点后面的结点都是相同的,若链表1的长度比链表2的长度大len,//则需要将链表1起始结点向后移动len个长度,确保两个链表初始比较结点后面的长度是一样的。//链表的初始化其实就是链表的创建的过程,它的初始化其实和变量、//指针的初始化一样,如果你定义了一个指针,而没有对其进行初始化,//这个指针就是一个“野指针”,指向一块垃圾内存,这是很危险的,//链表的初始化就是为了让程序员能够获取链表的首地址,然后对其进行插入、删除、排序等操作了!class Solution {public: ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) { int len,len1,len2; ListNode* res=NULL; //初始化一个链表让其为空 if(pHead1==NULL||pHead2==NULL) //若两个链表有一个为空,则返回空链表res return res; ListNode* pNode1=pHead1; //这里很重要,计算原始两个链表的长度时,不能在原始的结点上操作 ListNode* pNode2=pHead2; while(pNode1!=NULL) //计算pHead1的长度 { ++len1; pNode1=pNode1->next; } while(pNode2!=NULL) //计算pHead2的长度 { ++len2; pNode2=pNode2->next; } len=(len1>len2)?(len1-len2):(len2-len1); //pHead1与pHead2的长度差len if(len1>len2) //这里的意思是,如果pHead1的长度大于pHead2的长度,将pHead1往后移动len { for(int i=0;i<len;i++) pHead1=pHead1->next; } else //如果pHead2的长度大于pHead1的长度,将pHead2往后移动len { for(int i=0;i<len;i++) pHead2=pHead2->next; } while(pHead1!=NULL&&pHead2!=NULL) { if(pHead1->val!=pHead2->val) //不相等,pHead1和pHead2分别往后移动一个长度 { pHead1=pHead1->next; pHead2=pHead2->next; } else //相等,将结果赋给res,并结束while循环 { res=pHead1; break; } } return res; }};
阅读全文
1 0
- 【剑指offer】面试题37:两个链表的第一个公共结点
- [剑指offer]面试题37:两个链表的第一个公共结点
- 剑指Offer:面试题37 两个链表的第一个公共结点
- 剑指offer 面试题37 两个链表的第一个公共结点
- 《剑指Offer》学习笔记--面试题37:两个链表的第一个公共结点
- 【剑指Offer学习】【面试题37:两个链表的第一个公共结点】
- 剑指Offer面试题37(Java版):两个链表的第一个公共结点
- 剑指offer之面试题37两个链表的第一个公共结点
- 剑指Offer----面试题37:两个链表的第一个公共结点
- 剑指offer--面试题37:两个链表的第一个公共结点
- 剑指Offer面试题37(Java版):两个链表的第一个公共结点
- 剑指Offer之面试题37:两个链表的第一个公共结点
- 剑指offer-面试题37-两个链表的第一个公共结点
- 剑指Offer系列-面试题37:两个链表的第一个公共结点
- 剑指offer-面试题37-两个链表的第一个公共结点
- 剑指offer 面试题37 两个链表的第一个公共结点
- 【剑指offer】面试题37:两个链表的第一个公共结点
- 【剑指Offer】面试题37:两个链表的第一个公共结点
- 关于抽象类的学习
- 用链表实现的通讯录的功能
- 欢迎使用CSDN-markdown编辑器
- JavaScript为unicode编码转换为中文
- C#中结构体与类的区别
- 剑指offer面试题[37]-两个链表的第一个公共结点
- Mysql中Sql语句最大长度设置方法
- 快速搞定selenium grid分布式
- 《机器学习实战》书中python2.7与3.6的区别-持续更新
- Spring Boot集成JPA的Column注解命名字段无效的问题
- 灰度图像放大_matlab
- 2017多校训练赛第一场 HDU 6044 Limited Permutation(虚建笛卡尔树+超级读入挂)
- android 无线调试3
- matlab对文本文件、数据文件等的文件读取、操作等实用功能总结