示例 1:

输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

分析:
如果让两个链表a,b,走一个比较一次。如果是同一个结点。能判断是同一个结点吗?
显然的是不能的。为什么不能呢?
这种情况显然是两个链表长度是一样的结果。
可是这里长度是不一样的,有长有短

所以这种我们首先要遍历出,两个单链表的长度。
让长的链表先走几步,走完后,再同时走

这里定义两链表长度lengthA. lengthB;
如何遍历求长度?
通过定义一个函数,来求出两个链表的长度。

然后判断:
1.如果l1长,则让l1走。l1-l2 距离
2.如果l2长,则让l2走。l2-l1距离

a != b通过循环比较:
两者向后推:
a = a.next; b = b.next;
最后:
return a;
记得返回 如果返回a 则说明没有相交结点 为 null

java代码实现:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {int lengthA = getLength(headA), lengthB = getLength(headB);ListNode a = headA, b = headB;if(lengthA > lengthB){for(int i = 0; i < lengthA - lengthB; i++)a = a.next;} else {for(int i = 0; i < lengthB - lengthA; i++)b = b.next;}while(a != b){a = a.next;b = b.next;}return a;  //记得返回  如果返回a  则说明没有相交结点  为 null}private int getLength(ListNode head){int length = 0;//for(int i = 0; head != null; head = head.next, length++);while(head != null){head = head.next;length++;}return length;}}

两个链表的第一个公共节点分析相关推荐

  1. LeetCode-剑指 Offer 52. 两个链表的第一个公共节点

    剑指 Offer 52. 两个链表的第一个公共节点 思路一:用set容器,不符合题意 /*** Definition for singly-linked list.* struct ListNode ...

  2. 【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点

    [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 文章目录 [LeetCode]剑指 Offer 52. 两个链表的第一个公共节点 一.双指针 一.双指针 设 "第一个 ...

  3. 剑指Offer面试题:31.两个链表的第一个公共节点

    一.题目:两个链表的第一个公共节点 题目:输入两个链表,找出它们的第一个公共结点. 链表结点定义如下,这里使用C#语言描述: public class Node{public int key;publ ...

  4. 剑指 Offer 52. 两个链表的第一个公共节点

    题目:剑指 Offer 52. 两个链表的第一个公共节点 ,哈哈,我们今天来看一道很简单的题嘛,这是选自剑指 Offer 上的一道题,好了,我们一起来看看题意吧: 考虑到直接复制题目,或者截屏的方式不 ...

  5. 数据结构与算法--两个链表中第一个公共节点

    链表中第一个公共节点 公节点定义:同一个节点在两个链表中,并不是节点值相同 题目:输入两个节点,找出他们的第一个公共节点,节点定义如需 /*** 链表元素节点** @author liaojiamin ...

  6. 【Java】剑指 Offer 52. 两个链表的第一个公共节点

    题目 :输入两个链表,找出它们的第一个公共节点. 算法思路 : 首先我们要明确,两个链表相交,是Y形状的 两个链表相交,是next域相同 因为两个单链表的长度是不一样的,所以我们需要让长的那个链表,引 ...

  7. 算法------ 两个链表的第一个公共节点

    题目: 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构. 可假定整个链 ...

  8. 剑指 Offer 52. 两个链表的第一个公共节点(C语言)

    *输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = ...

  9. 《剑指Offer》52:两个链表的第一个公共节点

    题目 输入两个链表,找出它们的第一个公共节点. public static class ListNode{public int val;public ListNode next;public List ...

最新文章

  1. python使用imbalanced-learn的SMOTETomek方法同时进行上采样和下采样处理数据不平衡问题
  2. 解析1G到5G技术与设备发展历程
  3. MySQL—交叉连接、自然连接、内连接
  4. 显示多文档标签_HTML常用基础标签,前端从入门到精通
  5. Apache Shiro第3部分–密码学
  6. 丁香园在语义匹配任务上的探索与实践
  7. weblogic 启动 startWebLogic.sh
  8. php替代换行符号,php换行符号替换与过滤例子
  9. html制作dnf,dnf怎么制作img文件 时装拼合教程
  10. 什么是servlet技术?如何部署和新建一个servlet?
  11. MSTAR648方案遥控器配置
  12. WebSocket通信原理和在Tomcat中实现源码详解(万字爆肝)
  13. android系统运行缓慢,安卓手机运行速度慢怎么办 手机运行速度慢如何解决 - WiFi共享大师...
  14. Windows超级管理器 8.72 这一刻,刻不容缓。
  15. 弗拉基米尔·多罗宁_罗紫琳新欢俄亿万富豪 女星与老外的那些事儿
  16. 寒假宅喵java学习
  17. 内存占用少的linux桌面,不同桌面环境占用内存/CPU对比
  18. 基于SpringBoot生鲜商城
  19. 一个完整的python文件即是一个模块_README.md
  20. [运放滤波器]5_滤波器的分类

热门文章

  1. linux mysql 数据目录迁移后不生效_mysql 本地数据目录迁移
  2. 《阿里巴巴编码规范(JAVA)》学习认证考后感
  3. CentOS7下Firewall 开放指定端口
  4. 构建Docker镜像(三)
  5. Maven - Dynamic Web Module 3.0 requires Java 1.6 or newer.
  6. 使用gradle进行开发——环境搭建
  7. web.xml 常用标签配置(转)
  8. 游戏开发基础:A*算法(转)
  9. 安全获取QueryString的值类库下载
  10. 核弹级漏洞!我把log4j扒给你看!