美文网首页
单向链表-获取链表交叉节点

单向链表-获取链表交叉节点

作者: 今年花开正美 | 来源:发表于2020-05-31 23:04 被阅读0次

今天学习的算法是获取链表交叉节点。

题目介绍

给定两个链表,若链表没有交叉则输出null,若链表交叉则返回交叉节点。
交叉链表如下图所示:


链表交叉-题目 .png

实现思路

老规矩先看图吧:


链表交叉-解题.png
难点说明

这道题相比来说还是比较简单的,这个解题思路有以下三步:

1、先虚拟的将两个链表分表加到对方尾部,这样长度则一样了,记住只是虚拟出两个长度一样的链表。
2、两个移动指针同时从A和B开始移动,当移动到链表的尾部时,则再从另一个链表的头部开始遍历(相当于分别遍历两个虚拟链表)。
3、从图中可以看出终止条件有两个:
一是没有交叉,那最终两个指针都会遍历到对方的尾部节点然后退出即可。
二是若链表交叉了,那么最终两个指针一定会在交叉节点相遇(遍历长度是一样的,而交叉节点之后都一样),相遇节点既为交叉节点。

实现代码

public static ListNode getIntersectionNode(ListNode headA, ListNode headB) {
    //只要有一个节点的则不会交叉
    if (null == headA || null == headB) {
        return null;
    }
    if(headA == headB){
        return headA;
    }

    ListNode tempA = headA, tempB = headB;
    ListNode tailA = null,tailB = null;

    while (tempA != tempB) {
        if ((tailB != null && tailA != null) && tempA == tailB) {
        return null;
        }
        if (null == tempA.next) {
        tailA = tempA;
        tempA = headB;
        } else {
        tempA = tempA.next;
        }
        if (null == tempB.next) {
        tailB = tempB;
        tempB = headA;
        } else {
        tempB = tempB.next;
        }
    }

    return tempA;
}

相关文章

  • 单向链表-获取链表交叉节点

    今天学习的算法是获取链表交叉节点。 题目介绍 给定两个链表,若链表没有交叉则输出null,若链表交叉则返回交叉节点...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 数据结构-单向链表

    单向链表的结构 Node节点 根据index获取节点 添加 删除 获取index位置的元素 清空 虚拟头节点的单向...

  • 数据结构与算法(第一季):循环链表

    一、单向循环链表 尾节点的next,指向头节点。 二、单向循环链表接口设计 相较于单项链表,单向循环链表需要重写插...

  • 线性表-单向循环链表

    为了方便,本文介绍的单向循环链表不包含头节点 单向循环链表内容 单向循环链表的的定义 单向循环链表的创建 单向循环...

  • 从jdk源码的角度重温链表

    链表 由一系列节点组成的有序集合。 分为单向链表, 双向链表,循环链表 单向链表: 每一个节点都有一个指针指向下一...

  • 数据结构-链表

    相关掌握点 单向链表 双向链表 反转单向链表 判断链表是否含有环 链表构建 链表是一种线性结构,是通过指针引用节点...

  • 数据结构与算法(4)-单向循环链表

    1. 单向循环链表 单向循环链表就是一个单链表,然后最后一个节点的后继指向第一个节点。图例: 2. 单向循环链表的...

  • 7:LinkedList练习 单向链表(入门)(文末有项目

    1:单向链表 2:节点 3:无头节点的单向链表代码 4:测试代码 项目连接

  • 链表的实用操作函数

    单向链表的操作 /*链表节点声明*/ typedef struct listnode *listpointer; ...

网友评论

      本文标题:单向链表-获取链表交叉节点

      本文链接:https://www.haomeiwen.com/subject/ekjdzhtx.html