两个链表的第一个公共结点

简介: 两个链表的第一个公共结点

今天为大家带来一道题目:

这个题目先来看看我自己写的错误版本


public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode tmp1=pHead1;
        ListNode tmp2=pHead2;
        while(pHead1!=null&&pHead2!=null){
            ListNode cur=tmp1;
            if(tmp1.val!=tmp2.val){
                tmp1=tmp1.next;
                tmp2=tmp2.next;
            }
            return cur;
        }
        if(pHead1!=null){
            return pHead1;
        }
        if(pHead2!=null){
            return pHead2;
        }
    }
}

这是错误的写法

来看正确的写法


public class Solution {
    public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {
        ListNode l1 = pHead1, l2 = pHead2;
        while(l1 != l2){
            l1 = (l1==null)?pHead2:l1.next;
            l2 = (l2==null)?pHead1:l2.next;
        }
        return l1;
    }
}


遍历了链表1和链表2,一旦相遇就退出

相关文章
|
4月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
93 1
|
5月前
链表的中间结点
链表的中间结点
193 57
|
3月前
|
存储 算法 搜索推荐
链表的中间结点
【10月更文挑战第24天】链表的中间结点是链表操作中的一个重要概念,通过快慢指针法等方法可以高效地找到它。中间结点在数据分割、平衡检测、算法应用等方面都有着重要的意义。在实际编程中,理解和掌握寻找中间结点的方法对于解决链表相关问题具有重要价值。
33 1
|
8月前
|
算法
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
数据结构和算法学习记录——线性表之双向链表(上)-结点类型定义、初始化函数、创建新结点函数、尾插函数、打印函数、尾删函数
68 0
|
4月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
25 0
|
6月前
|
算法
LeetCode第19题删除链表的倒数第 N 个结点
该文章介绍了 LeetCode 第 19 题删除链表的倒数第 N 个结点的解法,通过使用快慢双指针,先将快指针移动 n 步,然后快慢指针一起遍历,直到快指针到达链尾,从而找到倒数第 N 个结点的前一个结点进行删除,同时总结了快慢指针可减少链表遍历次数的特点。
LeetCode第19题删除链表的倒数第 N 个结点
|
7月前
【数据结构OJ题】链表中倒数第k个结点
牛客题目——链表中倒数第k个结点
50 1
【数据结构OJ题】链表中倒数第k个结点
|
6月前
【刷题记录】链表的中间结点
【刷题记录】链表的中间结点
|
7月前
【数据结构OJ题】链表的中间结点
力扣题目——链表的中间结点
37 0
【数据结构OJ题】链表的中间结点
|
8月前
|
算法
19.删除链表的倒数第N个结点
19.删除链表的倒数第N个结点