博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两个链表的第一个公共结点-输入两个链表,找出它们的第一个公共结点。
阅读量:4308 次
发布时间:2019-06-06

本文共 1853 字,大约阅读时间需要 6 分钟。

1、蛮力法:

1 /* 2 struct ListNode { 3     int val; 4     struct ListNode *next; 5     ListNode(int x) : 6             val(x), next(NULL) { 7     } 8 };*/ 9 class Solution {10 public:11     ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {12         if(pHead1==NULL||pHead2==NULL)13             return NULL;14         ListNode* p1;15         ListNode* p2;16         for(p1=pHead1;p1!=NULL;p1=p1->next){17             for(p2=pHead2;p2!=NULL;p2=p2->next){18                 if(p1==p2)19                     return p1;20             }21         }22         return NULL;23     }24 };

2、

从链表的定义可以看出,这两个链表是单链表,如果两个链表有公共节点,那么这两个链表从某一节点开始,它们的m_pNext都指向同一个节点,之后它们所有的节点都是重合的,不可能再出现分叉。所以拓扑形状看起来是Y型。

 

一个简单的方法是:首先遍历两个链表得到它们的长度,就能知道哪个链表比较长,以及长的链表比短的链表多几个节点。在第二次遍历的时候,先在较长的节点上走若干步,接着同时在两个链表上遍历,找到的第一个相同的节点就是它们的公共的节点。

1 /* 2 struct ListNode { 3     int val; 4     struct ListNode *next; 5     ListNode(int x) : 6             val(x), next(NULL) { 7     } 8 };*/ 9 class Solution {10 public:11     ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) {12         if(pHead1==NULL||pHead2==NULL)13             return NULL;14         int l1=0,l2=0;15         ListNode* p1=pHead1;16         ListNode* p2=pHead2;17         while(p1!=NULL){18             l1++;19             p1=p1->next;20         }21         while(p2!=NULL){22             l2++;23             p2=p2->next;24         }25         int d1=0,d2=0;26         if(l1>l2)27             d1=l1-l2;28         if(l1
next;34 d1--;35 }36 while(d2!=0){37 p2=p2->next;38 d2--;39 }40 while(p1!=NULL&&p2!=NULL){41 if(p1==p2)42 return p1;43 p1=p1->next;44 p2=p2->next;45 }46 return NULL;47 }48 };

 

转载于:https://www.cnblogs.com/zl1991/p/4775888.html

你可能感兴趣的文章
幂等和高并发在电商系统中的使用
查看>>
手机操控全站仪安卓版 测量员.app
查看>>
mysql 模块使用
查看>>
解决android中Layout文件下的xml文件配好后,R类中不能自动生成相应代码
查看>>
[iOS] photoKit获取所有照片
查看>>
下载安装webstrom及激活
查看>>
Android Studio 之 NDK篇
查看>>
【ASP】简单Url编码和Url解码实例
查看>>
怎样基于谷歌地图的Server缓存公布Image Service服务
查看>>
完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)...
查看>>
浅谈UML的概念和模型之UML九种图
查看>>
BW:BW增量更新方法(假增量)
查看>>
SQLite—homework
查看>>
理解js中的原型链,prototype与__proto__的关系
查看>>
design.js
查看>>
ReactiveCocoa入门教程——第一部分
查看>>
自定义能够for each的类,C#,Java,C++,C++/cli的实现方法
查看>>
Content-Disposition 响应头,设置文件在浏览器打开还是下载
查看>>
oracle 事务测试
查看>>
CSS3动画@keyframes中translate和scale混用出错问题
查看>>