代码编织梦想

public ListNode getIntersectionNode(ListNode headA,ListNode headB){
    if (headA == null || headB == null){
        return null;
    }

    ListNode pl = headA;  //假设现在单链表A比单链表B长
    ListNode ps = headB;
    int lenA = 0;
    int lenB = 0;
    while (pl != null){   //求单链表A长度
        lenA++;
        pl = pl.next;
    }
    pl = headA;  //不加这一句,pl此时就是null
    while (ps != null){   //求单链表B长度
        lenB++;
        ps = ps.next;
    }
    ps = headB;
    int len = lenA - lenB;  //差值步,先让最长的单链表走len步后,两链表再同时走

    if (len < 0){  //说明单链表A长度 < B
        pl = headB;
        ps = headA;
        len = lenB - lenA;
    }//此时,pl永远指向最长的链表,ps永远指向了最短的链表
    while (len != 0 ){   //pl走差值len步
        pl = pl.next;
        len--;
    }
    if ( pl != ps ){
        pl = pl.next;
        ps = ps.next;
    }
    return pl;  
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_62033031/article/details/128730715

程序员面试金典 02.07. 链表相交_早睡身体好hh的博客-爱代码爱编程

题目链接:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/ 思路如下: 如果把这两个链表一前一后拼接在一起,那么拼接后的两个总链表长度

链表常见算法题四:链表相交及成环问题 返回两个链表相交节点 判断链表是否成环 返回链表的入环节点_野蛮生长的小vv的博客-爱代码爱编程

题目描述:编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [

leetcode17:相交链表(160)、两数之和 II - 输入有序数组(167)-爱代码爱编程

1.相交链表 编写一个程序,找到两个单链表相交的起始节点。 注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 思路:指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历,如果 pA 到了末尾,则 pA =

给定两个链表,找出两个链表相交的起始交点-爱代码爱编程

给定两个链表,找出两个链表相交的起始交点 思路:首先求出两个链表的长度,再求出它们的长度差,然后让较长的链表走差值步,然后再让它们一起走,如果它们相遇且不为null,代表此时就是它们的起始交点。 public static Nodee Findpublic(Nodee headA,Nodee headB) {//这是针对两个单链表,所以把方法写在这里比

链表面试常考题-相交链表+合并两个有序链表-爱代码爱编程

目录 相交链表:题目描述:示例描述:个人描述:题解实现:合并两个有序链表:题目描述:示例描述:个人理解:题解实现: 相交链表: 题目描述: 给你两个单链表的头结点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。 图示两个链表在节点c1开始相交: 题目数据保证整个链式结构中不存在环。 注意,

[剑指offer专项突击版-Java解法]剑指 Offer II 023. 两个链表的第一个重合节点-爱代码爱编程

剑指 Offer II 023. 两个链表的第一个重合节点 题目描述 给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例

剑指 Offer II 023. 两个链表的第一个重合节点-爱代码爱编程

题目:给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 思路:想办法把两个链表右对齐,这样从右往左最后一个相同节点就是相交节点了; 在A和B不相同的情况下A和B各自移动到下一节点,移动到空的时候变为另外一个链的头结点继续(也即在A链的末尾加上B链,B链的末尾加上A链,

力扣刷题160——相交链表-爱代码爱编程

题目:         给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例: 输入:intersectVal =

剑指offer_023 两个链表的第一个重合节点-爱代码爱编程

题目: 给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例一: 输入:int

两个链表是否相交问题-爱代码爱编程

给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。注意:可能会出现链式结构中出现环。 首先,判断单个链表是否成环,给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 很简单

剑指 Offer II 023. 两个链表的第一个重合节点(简单 链表 哈希表 双指针)-爱代码爱编程

剑指 Offer II 023. 两个链表的第一个重合节点 给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入:i

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。【LeetCode Hot 100】-爱代码爱编程

力扣热题100之第160题: 方法一、差值步法: 这个方法的思路为先定义两个指针,分别指向两条链表的头节点,再一人一步往后走,如果这两条链表有相交,则两个指针必定会相遇,若没有相遇则返回null,说明两条链表没有相交。 但是上述情况是在两条链表长度相等的情况下,若这两条链表不相等怎么办呢? 我们可以先找到两条链表中较长的那条,让指向长链表的那个头指

LeetCode练习34:两个链表的第一个重合节点-爱代码爱编程

LeetCode链接:力扣 题目: 给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例: 输入:intersectV

两个链表的第一个重合节点_yiyantangad的博客-爱代码爱编程

文章目录 链接题目思路代码 链接 https://leetcode.cn/problems/3u1WK4/ 题目 给定两个单链表的头节点 headA 和 headB ,请找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交:题目数据保证整个链式结构中不存在环。 注意,函数返回结果

算法题-链表 javascript | 有图 | 有过程 | 有真相_程程.的博客-爱代码爱编程

链表算法题解 配套链表结构学习 1. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 = [1,2,4], l2 = [1,3,4

leetcode刷题 day8 | 链表:删除倒数第n个节点+链表相交+环形链表_废柴小七的博客-爱代码爱编程

知识点 题目 删除链表的倒数第N个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。示例: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] # De

练习——【单链表】203.移除链表元素 | 21.合并两个有序链表 | cm11链表分割 | 160.相交链表_21. 203. 移除链表元素-爱代码爱编程

目录 1.移除链表元素 方法一:删除等于val的结点 方法二:遍历原链表,把不是val的节点拿出来尾插到新链表 方法三:带哨兵位的头节点 2.合并两个有序链表 方法一:归并,不带哨兵位 方法二:归并,带哨兵位 3.链表分割 4.相交链表 1.移除链表元素 题目:给你一个链表的头节点 head 和一个整数 val ,请你删