【每天学习一点算法 2026/03/08】相交链表

每天学习一点算法 2026/03/08

题目:相交链表

给你两个单链表的头节点 headAheadB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null

  1. 我们可以先遍历一个链表将所有节点都存放在 Set 集合中,然后遍历另外一个链表遇到相同节点则表示这就是相交起始节点,如果没有相同节点则表示不存在相交节点。

    typescript 复制代码
    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     val: number
     *     next: ListNode | null
     *     constructor(val?: number, next?: ListNode | null) {
     *         this.val = (val===undefined ? 0 : val)
     *         this.next = (next===undefined ? null : next)
     *     }
     * }
     */
    
    function getIntersectionNode(headA: ListNode | null, headB: ListNode | null): ListNode | null {
      const set = new Set()
      while (headA) {
        set.add(headA)
        headA = headA.next
      }
      while (headB) {
        if (set.has(headB)) {
          return headB
        }
        headB = headB.next
      }
      return null
    };
  2. 双指针解法

    我们看图中这种情况,我们可以看出

    用一个指针遍历A链表,然后再遍历B链表,第二次到达相交节点的需要遍历的次数

    用一个指针遍历B链表,然后再遍历A链表,第二次到达相交节点的需要遍历的次数

    是相等的

    所以我们可以用两个指针分别遍历 A → B 和 B → A,两个指针节点第一次相遇的节点就是相交的起始节点,如果两个指针都遍历完了还没相遇那就没有相交节点。

    typescript 复制代码
    function getIntersectionNode(headA: ListNode | null, headB: ListNode | null): ListNode | null {
      let tempA = headA
      let tempB = headB
      while (tempA != tempB) {
        tempA = tempA == null ? headB : tempA.next
        tempB = tempB == null ? headA : tempB.next
      }
      return tempA
    };

题目来源:力扣(LeetCode)

相关推荐
YH55269842 小时前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
吃着火锅x唱着歌2 小时前
Effective C++ 学习笔记 条款43 学习处理模板化基类内的名称
c++·笔记·学习
weixin_431600443 小时前
Agent Workflow 学习向:Code 节点,比模板更强的变量加工
后端·python·学习·ai·
遥感知识服务4 小时前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶4 小时前
1-13-TimSort
算法
ZJU_统一阿萨姆4 小时前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
Xuanzang Road4 小时前
第 40 届学习强企玄奘路戈壁挑战赛:在绝境中重塑自我
学习
tju新生代魔迷5 小时前
Python学习日记3
学习
叩码以求索6 小时前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
hsjiasb7 小时前
FreeRTOS学习(三十九)——最终总结
学习·学习笔记·freertos