Leetcode 160. Intersection of Two Linked Lists

版权声明:博客文章都是作者辛苦整理的,转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/83449893

文章作者:Tyan
博客:noahsnail.com  |  CSDN  |  简书

1. Description

Intersection of Two Linked Lists

2. Solution

  • Version 1
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        unordered_map<ListNode*, ListNode*> m;
        ListNode* current = headA;
        while(current) {
            m[current] = current;
            current = current->next;
        }
        current = headB;
        while(current) {
            if(m.find(current) != m.end()) {
                return current;
            }
            current = current->next;
        }
        return nullptr;
    }
};
  • Version 2
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(!headA || !headB) {
            return nullptr;
        }
        ListNode* pA = headA;
        ListNode* pB = headB;
        while(pA != pB) {
            pA = pA->next;
            pB = pB->next;
            if(!pA && pB) {
                pA = headB;
            }
            if(pA && !pB) {
                pB = headA;
            }
        }
        return pA?pA:nullptr;
    }
};

Reference

  1. https://leetcode.com/problems/intersection-of-two-linked-lists/description/
阅读更多

扫码向博主提问

SnailTyan

博客专家

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 深度学习
  • PyTorch
  • OCR
  • Docker
  • Caffe
去开通我的Chat快问

没有更多推荐了,返回首页