码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode160

时间:2020-07-10 23:51:38      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:list   turn   nullptr   system   链表   内容   leetcode   std   sts   

题目链接

https://leetcode-cn.com/problems/intersection-of-two-linked-lists/

初次读题

初次读题可知

  • 两个指针相同即需要求得的结果
  • 链表长度可能不同
  • 两个链表可能没有交叉点,此时返回NULL
  • 不可修改链表结构
  • 链表中无循环

我第一次读题时看的是英文版,并且我刚开始做LeetCode对题目风格也不熟悉,同时这道题的Example也是很神奇,我一下子没有理解题意,看了中文版的题目和题解后才明白这个题是怎么做的。

注意点

根据这道题的代码模板和最终答案可知,最终我们需要找到交叉结点的指针。

在Example1中,val为1的两个结点虽然内容相同,但不是交叉点,因为交叉点的定义是同时存在于两个链表中。

题解一

思路

假如两个链表有交叉点(intersection),则可以设两个链表彼此不重复的结点个数分别为d1和d2,重复的结点个数为d。如果一个链表遍历完则使其从另外一个链表的头部重新开始,这样形成一个式子:d1+d+d2=d2+d+d1

假如两个链表没有交叉点,这也只是d=0的一个特例,因此只要实现上述思路即可。

关于思路,可以看看这个题的一个视频题解:

https://leetcode-cn.com/problems/intersection-of-two-linked-lists/solution/lian-biao-xiang-jiao-shuang-zhi-zhen-onshi-jian-fu/

代码

// Problem: Leetcode 160
// URL: https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
// Tags: Linked List
// Difficulty: Easy

#include <iostream>
using namespace std;

struct ListNode{
    int val;
    ListNode* next;
    ListNode(int x):val(x),next(NULL){}
};

class Solution{
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB){
        // Deal with the border "nullptr"
        if (nullptr==headA || nullptr==headB)
        {
            return nullptr;
        }
        ListNode *ptrA = headA;
        ListNode *ptrB = headB;
        
        // d1+d+d2=d2+d+d1
        while (ptrA != ptrB){
            ptrA = nullptr == ptrA ? headB : ptrA->next;
            ptrB = nullptr == ptrB ? headA : ptrB->next;
        }
        return ptrA;
    }
};

int main()
{
    // system("pause");
    return 0;
}

题解二

也看到有人讲这个思路:

遍历链表A并将每个结点的指针存入set,然后遍历链表B并判断每个结点指针是否存在于set中。


作者:@臭咸鱼

转载请注明出处:https://www.cnblogs.com/chouxianyu/

欢迎讨论和交流!


LeetCode160

标签:list   turn   nullptr   system   链表   内容   leetcode   std   sts   

原文地址:https://www.cnblogs.com/chouxianyu/p/13281937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!