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<l2)
29             d2=l2-l1;
30         p1=pHead1;
31         p2=pHead2;
32         while(d1!=0){
33             p1=p1->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

两个链表的第一个公共结点-输入两个链表,找出它们的第一个公共结点。相关推荐

  1. 输入两个链表,找出它们的第一个公共结点

    package demo;import java.util.HashMap;/** 题目描述 输入两个链表,找出它们的第一个公共结点.*/ /* public class ListNode {int ...

  2. 美团点评_给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。

    给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度. import java.util.*; public class Meituan_4 {public static void ...

  3. 1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程。2.编写一个程序,要求在第一个界面中输入两个数字,在第二个界面显示第一个界面两个数字的和。

    1.简述一个Activity跳转到另一个Activity时,两个Activity生命周期方法的执行过程. 首先,我创建了一个MainActivity和SecondActivity两个Activity. ...

  4. 刷题笔记之十 (小易的升级之路+找出字符串中第一个只出现一次的字符+洗牌+MP3光标位置)

    目录 1.存取任意指定序号的元素和在最后进行插入和删除运算,利用顺序表存储最节省时间 2. 数据结构中具有记忆功能的是栈 3. 递归程序的优化一般为 尾递归优化 4.二叉树遍历,前中后序遍历用到的是栈 ...

  5. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串

    剑指 Offer 58 - II. 左旋转字符串 解题思路: 反转区间为前n的子串 反转区间为n到末尾的子串 反转整个字符串 class Solution {public String reverse ...

  6. LeetCode 28. 找出字符串中第一个匹配项的下标 -- 字符串编码成数字匹配

    找出字符串中第一个匹配项的下标 中等 1.6K 相关企业 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 ...

  7. 28.找出字符串中第一个匹配项的下标

    28.找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始).如果 ...

  8. 找出字符串中第一个不重复的字符

    找出字符串中第一个不重复的字符 leetcode原题地址 我的解决方法 将字符串转换成字符数组 使用两层循环遍历,最终根据第二层循环退出时的下标值来判断是否是不重复的字符 我的代码: public i ...

  9. 笔试强训第三周编程题part01(年终奖,迷宫问题;微信红包,计算字符串的距离;小易的升级之路,找出字符串中第一个只出现一次的字符,洗牌)

    年终奖 OJ链接 此题是一道动态规划的问题 读题可知:只能从上往下和从左往右移动 由此需要前[i-1] [ j ]和[i][j-1]来比较大小来确实最优解. 其中有两种特殊情况,第一行和第一列 代码如 ...

  10. 题目:输入两个链表,找出它们的第一个公共结点。 单元测试

    链表结点定义如下,这里使用C#语言描述: public class Node{public int key;public Node nextNode;public Node(int key){this ...

最新文章

  1. 【视频】谷歌大佬30分钟让你入门机器学习(2019谷歌I/O资源分享)
  2. ubuntu 打包压缩
  3. LeetCode Assign Cookies
  4. 【转】ArrayList Vector LinkedList 区别与用法
  5. bae java乱码_BAE json 返回乱码。
  6. TCP/IP 协议大致的概念
  7. java 代码生成器 generator
  8. Phantomjs 生成多页PDF
  9. dbeaver 设置编码_物料编码管理程序
  10. centeros安装mySQL
  11. 传输线变压器设计原理
  12. 游戏盾SDK的防护介绍
  13. quora 分享链接
  14. mysql orm_从MySQL到ORM(二):MySQL基础
  15. 同一网段分化vlan问题
  16. iPad最值得期待的切实改进构想
  17. Spring基础知识
  18. lg 传奇手游java_2020年手机游戏角色扮演类和传奇类 排行榜NO.1 小编强势推荐
  19. 搭建本地Spring Initializr服务(2020/4/17)
  20. 算法描述怎么写伪代码java_伪代码描述算法

热门文章

  1. 训练(线段树+树状数组) poj——3264
  2. mysql 存储过程中limit
  3. mac 下用 brew 安装mongodb
  4. 3 useReducer及其实现
  5. 吉林省第二条国际铁路联运大通道“长珲欧”启动测试
  6. windows环境下OpenLDAP安装与客户端连接配置
  7. 前端lvs访问多台nginx代理服务时出现404错误的处理
  8. selinux 的管理
  9. 方程式漏洞之复现window2008/win7 远程命令执行漏洞
  10. 对寄存器ESP和EBP的一些理解