LeetCode(剑指 Offer)- 52. 两个链表的第一个公共节点

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 52. 两个链表的第一个公共节点相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路:主要能想到各组走完自己的链路 + 再走对方的链路一定能碰到在第一个相交点

相关企业

  • 优步(Uber)
  • 腾讯(Tencent)
  • PayPal
  • 谷歌(Google)
  • 三星
  • 高盛集团(Goldman Sachs)
  • 高通
  • 奥多比(Adobe)
  • 小米集团
  • 阿里巴巴
  • 字节跳动
  • 微软(Microsoft)
  • Facebook
  • Shopee
  • 美团
  • 叽里呱啦
  • 百度
  • 网易
  • miHoYo

AC 代码

  • Java
/**
 * Definition for singly-linked list.
 * public class ListNode 
 *     int val;
 *     ListNode next;
 *     ListNode(int x) 
 *         val = x;
 *         next = null;
 *     
 * 
 */

// 解决方案(1)
class Solution 
    ListNode getIntersectionNode(ListNode headA, ListNode headB) 
        Map<Integer, Boolean> map = new HashMap<>();
        while (headA != null) 
            if (!map.containsKey(headA.hashCode())) 
                map.put(headA.hashCode(), true);
            
            headA = headA.next;
        
        while (headB != null) 
            if (map.containsKey(headB.hashCode())) 
                return headB;
            
            headB = headB.next;
        
        return null;
    


// 解决方案(2)
public class Solution 
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) 
        ListNode A = headA, B = headB;
        while (A != B) 
            A = A != null ? A.next : headB;
            B = B != null ? B.next : headA;
        
        return A;
    
  • C++
/**
 * 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) 
        ListNode *A = headA, *B = headB;
        while (A != B) 
            A = A != nullptr ? A->next : headB;
            B = B != nullptr ? B->next : headA;
        
        return A;
    
;

以上是关于LeetCode(剑指 Offer)- 52. 两个链表的第一个公共节点的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode Algorithm 剑指 Offer 52. 两个链表的第一个公共节点

LeetCode(剑指 Offer)- 52. 两个链表的第一个公共节点

LeetCode(剑指 Offer)- 52. 两个链表的第一个公共节点

LeetCode 剑指Offer 52 两个链表的第一个公共节点[链表] HERODING的LeetCode之路

剑指 Offer 52-两个链表的第一个公共节点

LeetCode1035. 不相交的线 / 504. 七进制数 / 315. 计算右侧小于当前元素的个数 / 剑指 Offer 52. 两个链表的第一个公共节点