美文网首页
leetcode 160 两链表交点

leetcode 160 两链表交点

作者: 吃个小烧饼 | 来源:发表于2018-02-16 12:12 被阅读11次

Write a program to find the node at which the intersection of two singly linked lists begins.

这个问题的核心是2个链表长度不同。两个做法,一个是计算出长度,然后长的先走多出来的长度,不过我的代码写的不好,如果不创建子函数总是超时;还有一种方法就是链表走到头了之后去走别人的链表,设A的长度为lA,B的长度为lB,且lA<lB,那么A走完后还要走lB,此时B还剩lB-lA,然后要走A的话要走lA,所以B的路程=lB-lA+lA=lB。这样就相当于走了同样的路程。

那么代码也很好写了,如下:

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(headA == nullptr || headB == nullptr)  //有空链表直接return
            return nullptr;
        ListNode *A = headA, *B = headB;
        while(A && B){
            if(A == B)
                return A;
            A = A->next;
            B = B->next;
            if(A == B)
                return A;
            if(A == nullptr)
                A = headB;
            if(B == nullptr)
                B = headA;
        }
        return A;
    }
};  //整个算法没啥好解释的了^_^

相关文章

  • leetcode 160 两链表交点

    Write a program to find the node at which the intersectio...

  • LeetCode链表专题

    (一)LeetCode206.反转链表 题目描述: 反转一个单链表。 代码实现 (二)LeetCode160. 相...

  • 160. 相交链表

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

  • 常见的算法题

    一、找两个链表的交点 存在集中特殊情况: 1、链表长度相同且没交点 2、链表长度相同有交点 3、长度不同有交点(最...

  • LeetCode | 链表相关题目

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

  • 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...

  • leetcode160-链表相交节点

    1 简介 题目传送门leetcode160。 这个问题主要解决的是,找寻两个链表中相交的链表。为此,我们首先应该明...

  • Leetcode 160 相交链表

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

网友评论

      本文标题:leetcode 160 两链表交点

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