美文网首页
【Leetcode】 链表相交

【Leetcode】 链表相交

作者: 死鱼 | 来源:发表于2020-08-04 15:25 被阅读0次

题目

image.png

刚开始时直接上暴力遍历过了题目,然后看了大佬的题解,记录下这个双指针的方法

解法:双指针交换

我们目标是找到相交的地址,而不是相同的数值,所以方法就是两边指针先同时向后走,走完了之后,去另一个头重新开始向后走

  1. 在最坏情况下,保证两个指针走的路程,的最大值是 len(a)+len(b),因为如果没有相交,两个指针必然走完了两条链表,然后在最后一个nil地方等值。


    image.png
  2. 相交的情况下,两个指针最晚也能在第二趟的时候遇到交点并且等值。


    image.png

    因为双指针本质上就是两个指针走两条链表,而这两条链表是(A->B)和(B->A),把上面的图转换一下


    image.png

因为相交的节点,后面接的都是完全一样的,没有区别,问题就是前面有多少个不相交的点,而指针换头就是抵消了前面不相交的点。所以只要有交点,就一定能在双指针遍历中碰到。

代码:

func getIntersectionNode(headA, headB *ListNode) *ListNode {
    tempA := headA
    tempB := headB

    for tempA != tempB {
        if tempA != nil {
            tempA = tempA.Next
        } else {
            tempA = headB
        }

        if tempB != nil {
            tempB = tempB.Next
        } else {
            tempB = headA
        }
    }
    
    return tempA
}

相关文章

  • LeetCode:相交链表

    相交链表 题目叙述: 编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表: 示例: 示例 1: 示例 2...

  • 160. 相交链表

    160. 相交链表[https://leetcode.cn/problems/intersection-of-tw...

  • TOP 100 51 - 56

    160. 相交链表[https://leetcode-cn.com/problems/intersection-o...

  • 160. 相交链表

    160. 相交链表[https://leetcode-cn.com/problems/intersection-o...

  • LeetCode 156-160

    160. 相交链表[https://leetcode-cn.com/problems/intersection-o...

  • LeetCode | 链表相关题目

    LeetCode 160.相交链表 编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:示例在节点 c1...

  • leetcode_相交链表

    编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链...

  • 【Leetcode】 链表相交

    题目 刚开始时直接上暴力遍历过了题目,然后看了大佬的题解,记录下这个双指针的方法 解法:双指针交换 我们目标是找到...

  • leetcode 链表相交

    给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如...

  • Leetcode 160 相交链表

    题目 编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入...

网友评论

      本文标题:【Leetcode】 链表相交

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