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

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

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 };

 

转载地址:http://phgwa.baihongyu.com/

你可能感兴趣的文章
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
android studio修改新项目package名称
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Hadoop2.5.0 搭建实录
查看>>
实验吧 recursive write up
查看>>
High-speed Charting Control--MFC绘制图表(折线图、饼图、柱形图)控件
查看>>
go test命令參数问题
查看>>
linux 搜索文本
查看>>
超实用Mac软件分享(二)
查看>>