我是靠谱客的博主 难过小熊猫,最近开发中收集的这篇文章主要介绍LeetCode题目之腾讯精选练习(50题):相交链表题目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目

编写一个程序,找到两个单链表相交的起始节点。

如下面的两个链表:
在这里插入图片描述
在节点 c1 开始相交。

注意

1、如果两个链表没有交点,返回 null.
2、在返回结果后,两个链表仍须保持原有的结构。
3、可假定整个链表结构中没有循环。
4、程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。

示例 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 个节点。

示例 2 :
在这里插入图片描述

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

示例 2 :
在这里插入图片描述

输入:intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
输出:null
输入解释:从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。由于这两个链表不相交,所以 intersectVal 必须为 0,而 skipA 和 skipB 可以是任意值。
解释:这两个链表不相交,因此返回 null。

实现代码

public ListNode GetIntersectionNode(ListNode headA, ListNode headB)
{
    var a = new HashSet<ListNode>();
    ListNode cur1 = headA, cur2 = headB;
    while (cur1 != null)
    {
        a.Add(cur1);
        cur1 = cur1.next;
    }
    while (cur2 != null)
    {
        if (a.Contains(cur2))
            return cur2;
        cur2 = cur2.next;
    }
    return null;
}

执行结果

执行结果:通过
执行用时 : 188 ms, 在所有 C# 提交中击败了87.67%的用户
内存消耗 : 37.8 MB, 在所有 C# 提交中击败了5.88%的用户
在这里插入图片描述

小的总结

这道题让我想到之前的循环链表,所以首先想到用哈希表,之后看了官方题解,双指针法才完全符合题目要求,类似循环链表里的快慢指针。

双指针法

public ListNode getIntersectionNode(ListNode headA, ListNode headB)
{
    if (headA == null || headB == null) return null;
    ListNode pA = headA, pB = headB;
    while (pA != pB)
    {
        pA = pA == null ? headB : pA.next;
        pB = pB == null ? headA : pB.next;
    }
    return pA;
}

在这里插入图片描述

最后

以上就是难过小熊猫为你收集整理的LeetCode题目之腾讯精选练习(50题):相交链表题目的全部内容,希望文章能够帮你解决LeetCode题目之腾讯精选练习(50题):相交链表题目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(702)

评论列表共有 0 条评论

立即
投稿
返回
顶部